fix(api): валидировать применение и восстановление маршрутов

This commit is contained in:
Denozordec committed 2026-09-30 21:15:23 +07:00
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(),
})