forked from jappel/leistungsbilanz-ts
47 lines
1.7 KiB
TypeScript
47 lines
1.7 KiB
TypeScript
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<typeof createProjectDeviceSchema>;
|
|
export type UpdateProjectDeviceInput = z.infer<typeof updateProjectDeviceSchema>;
|