import { z } from "zod"; import { projectDeviceSyncFields } from "../constants/project-device-sync-fields.js"; import { expectedProjectRevisionSchema } from "./project-command.schemas.js"; import { circuitGroupCategories } from "../constants/circuit-group.js"; export const createProjectDeviceSchema = z.object({ name: z.string().min(1), displayName: z.string().min(1), connectionKind: z.string().optional(), costGroup: z.string().optional(), category: z.enum(circuitGroupCategories), quantity: z.number().min(0), powerPerUnit: z.number().min(0), simultaneityFactor: z.number().min(0).max(1), cosPhi: z.number().min(0).max(1).optional(), remark: z.string().optional(), }).strict(); export const updateProjectDeviceSchema = createProjectDeviceSchema; export const createProjectDeviceCommandSchema = createProjectDeviceSchema.extend({ expectedRevision: expectedProjectRevisionSchema, }); export const updateProjectDeviceCommandSchema = updateProjectDeviceSchema.extend({ expectedRevision: expectedProjectRevisionSchema, }); export const projectDeviceStructureCommandSchema = z.object({ expectedRevision: expectedProjectRevisionSchema, }); export const synchronizeProjectDeviceRowsSchema = z.object({ rowIds: z.array(z.string().min(1)).min(1), fields: z.array(z.enum(projectDeviceSyncFields)).min(1), expectedRevision: expectedProjectRevisionSchema, }); export const disconnectProjectDeviceRowsSchema = z.object({ rowIds: z.array(z.string().min(1)).min(1), expectedRevision: expectedProjectRevisionSchema, }); export type CreateProjectDeviceInput = z.infer; export type UpdateProjectDeviceInput = z.infer;