fix(api): валидировать применение и восстановление маршрутов
This commit is contained in:
1 parent
f5fc9282e2
commit
52493debc2
6 files changed
+146
-56
No files matched your search
@@ -0,0 +1,18 @@
|
||||
import { z } from "zod"
|
||||
const serverId = z.union([z.number().int().positive(), z.string().trim().regex(/^\d+$/)])
|
||||
.transform(Number).refine(value => Number.isSafeInteger(value) && value > 0)
|
||||
export const recursiveTargetSchema = z.object({ serverId })
|
||||
export const recursiveInputRowSchema = z.object({
|
||||
id: z.string().optional().default(""),
|
||||
dstAddress: z.string().trim().min(1), gateway: z.string().trim().min(1),
|
||||
distance: z.number().int().min(0).max(255),
|
||||
scope: z.number().int().min(0).max(255).nullable(),
|
||||
targetScope: z.number().int().min(0).max(255).nullable(),
|
||||
routingTable: z.string().trim().min(1), checkGateway: z.string(),
|
||||
country: z.string(), comment: z.string(), disabled: z.boolean(),
|
||||
})
|
||||
export const recursiveInputRowsSchema = z.array(recursiveInputRowSchema)
|
||||
.refine(rows => { const ids = rows.map(row => row.id).filter(Boolean); return new Set(ids).size === ids.length })
|
||||
export const recursiveApplyBodySchema = recursiveTargetSchema.extend({
|
||||
routes: recursiveInputRowsSchema, source: z.enum(["apply", "copy"]).optional(),
|
||||
})
|
||||
Reference in new issue
Block a user