fix(api): сохранять каталог speed-проб атомарно
This commit is contained in:
1 parent
d4f2961f76
commit
908974302e
9 files changed
+204
-86
No files matched your search
@@ -27,3 +27,14 @@ export const speedProbeReadSchema = z.object({
|
||||
})
|
||||
export const speedProbesResponseSchema = z.object({ probes: z.array(speedProbeReadSchema).refine(rows => new Set(rows.map(row => row.id)).size === rows.length, "Повторный ID speed-пробы") })
|
||||
export type SpeedProbeRead = z.infer<typeof speedProbeReadSchema>
|
||||
|
||||
const speedPositiveInteger = z.union([z.number(), z.string().regex(/^[1-9][0-9]*$/).transform(Number)]).pipe(z.number().int().positive().max(Number.MAX_SAFE_INTEGER))
|
||||
export const speedProbeWriteSchema = z.object({
|
||||
id: z.string().trim().min(1), srcServerId: speedPositiveInteger, dstServerId: speedPositiveInteger,
|
||||
srcInterface: z.string().trim(), dstInterface: z.string().trim(),
|
||||
protocol: z.enum(["tcp", "udp"]), direction: z.enum(["both", "transmit", "receive"]),
|
||||
durationSec: speedPositiveInteger.pipe(z.number().min(3).max(2147483647)), enabled: z.boolean(),
|
||||
}).refine(row => row.srcServerId !== row.dstServerId, "Источник и назначение должны отличаться")
|
||||
export const speedProbesWriteSchema = z.object({ probes: z.array(speedProbeWriteSchema).refine(rows => new Set(rows.map(row => row.id)).size === rows.length, "Повторный ID speed-пробы") })
|
||||
export const speedProbesSavedSchema = z.object({ ok: z.literal(true), warning: z.string().min(1).optional() })
|
||||
export type SpeedProbeWrite = z.infer<typeof speedProbeWriteSchema>
|
||||
Reference in new issue
Block a user