77 lines
2.8 KiB
TypeScript
77 lines
2.8 KiB
TypeScript
import { z } from "zod";
|
|
import {
|
|
cableCrossSectionOptions,
|
|
cableTypeOptions,
|
|
consumerGroupOptions,
|
|
deviceTypeOptions,
|
|
phaseTypeOptions,
|
|
protectionCharacteristicOptions,
|
|
protectionTypeOptions,
|
|
tradeOrCostGroupOptions,
|
|
} from "../constants/consumer-option-lists.js";
|
|
|
|
export const createConsumerSchema = z.object({
|
|
projectId: z.string().min(1),
|
|
distributionBoardId: z.string().min(1).optional(),
|
|
circuitListId: z.string().min(1).optional(),
|
|
projectDeviceId: z.string().min(1).optional(),
|
|
isLinkedToDevice: z.boolean().optional(),
|
|
roomId: z.string().min(1).optional(),
|
|
circuitNumber: z.string().optional(),
|
|
description: z.string().optional(),
|
|
name: z.string().optional(),
|
|
category: z.string().optional(),
|
|
deviceType: z.enum(deviceTypeOptions).optional(),
|
|
phaseType: z.enum(phaseTypeOptions).optional(),
|
|
tradeOrCostGroup: z.enum(tradeOrCostGroupOptions).optional(),
|
|
group: z.enum(consumerGroupOptions).optional(),
|
|
protectionType: z.enum(protectionTypeOptions).optional(),
|
|
protectionRatedCurrent: z.number().min(0).optional(),
|
|
protectionCharacteristic: z.enum(protectionCharacteristicOptions).optional(),
|
|
cableType: z.enum(cableTypeOptions).optional(),
|
|
cableCrossSection: z.enum(cableCrossSectionOptions).optional(),
|
|
comment: z.string().optional(),
|
|
quantity: z.number().min(0).optional(),
|
|
installedPowerPerUnitKw: z.number().min(0).optional(),
|
|
demandFactor: z.number().min(0).max(1).optional(),
|
|
voltageV: z.number().positive().optional(),
|
|
phaseCount: z.union([z.literal(1), z.literal(3)]).optional(),
|
|
powerFactor: z.number().min(0).max(1).optional(),
|
|
note: z.string().optional(),
|
|
});
|
|
|
|
export const updateConsumerSchema = createConsumerSchema;
|
|
|
|
export const createProjectSchema = z.object({
|
|
name: z.string().min(1),
|
|
singlePhaseVoltageV: z.number().positive().optional(),
|
|
threePhaseVoltageV: z.number().positive().optional(),
|
|
});
|
|
|
|
export const updateProjectSettingsSchema = z.object({
|
|
singlePhaseVoltageV: z.number().positive(),
|
|
threePhaseVoltageV: z.number().positive(),
|
|
});
|
|
|
|
export const createDistributionBoardSchema = z.object({
|
|
name: z.string().min(1),
|
|
});
|
|
|
|
export const createFloorSchema = z.object({
|
|
name: z.string().min(1),
|
|
});
|
|
|
|
export const createRoomSchema = z.object({
|
|
floorId: z.string().min(1).optional(),
|
|
roomNumber: z.string().min(1),
|
|
roomName: z.string().min(1),
|
|
});
|
|
|
|
export type CreateConsumerInput = z.infer<typeof createConsumerSchema>;
|
|
export type CreateProjectInput = z.infer<typeof createProjectSchema>;
|
|
export type UpdateProjectSettingsInput = z.infer<typeof updateProjectSettingsSchema>;
|
|
export type CreateDistributionBoardInput = z.infer<typeof createDistributionBoardSchema>;
|
|
export type UpdateConsumerInput = z.infer<typeof updateConsumerSchema>;
|
|
export type CreateFloorInput = z.infer<typeof createFloorSchema>;
|
|
export type CreateRoomInput = z.infer<typeof createRoomSchema>;
|