10 lines
737 B
TypeScript
10 lines
737 B
TypeScript
import {z} from "zod"
|
|
export const ospfOptimizerMetricSchema=z.object({
|
|
value:z.number().finite().nonnegative().nullable(),
|
|
source:z.enum(["speed-probe","interface-traffic","unknown"]),
|
|
sourceId:z.string().min(1).nullable(),
|
|
measuredAt:z.string().datetime({offset:true}).nullable(),
|
|
}).refine(metric=>metric.value===null ? metric.source==="unknown"&&metric.sourceId===null&&metric.measuredAt===null : metric.source!=="unknown"&&metric.sourceId!==null)
|
|
export const ospfOptimizerObservedSchema=z.object({ping:ospfOptimizerMetricSchema,dl:ospfOptimizerMetricSchema,ul:ospfOptimizerMetricSchema}).refine(observed=>observed.ping.source!=="interface-traffic")
|
|
export type OspfOptimizerObserved=z.infer<typeof ospfOptimizerObservedSchema>
|