35 lines
1.3 KiB
TypeScript
35 lines
1.3 KiB
TypeScript
|
|
import { z } from "zod/v4";
|
||
|
|
|
||
|
|
import {
|
||
|
|
ResourceInputSchema,
|
||
|
|
ResourceSpecificationSchema,
|
||
|
|
ResourceValueSchema,
|
||
|
|
} from "../api/domain/resource-values";
|
||
|
|
|
||
|
|
export type { ResourceCharacteristic, ResourceInput } from "../api/domain/resource-values";
|
||
|
|
|
||
|
|
export { ResourceInputSchema, ResourceSpecificationSchema, ResourceValueSchema };
|
||
|
|
export const InventoryParamsSchema = z.strictObject({ companyId: z.uuid() });
|
||
|
|
export const ResourceParamsSchema = InventoryParamsSchema.extend({ id: z.uuid() });
|
||
|
|
export const SaveResourceRequestSchema = z.strictObject({ values: ResourceInputSchema });
|
||
|
|
export const ResourceRevisionSchema = z.strictObject({
|
||
|
|
id: z.uuid(),
|
||
|
|
values: ResourceInputSchema,
|
||
|
|
actorId: z.uuid(),
|
||
|
|
actorName: z.string().min(1),
|
||
|
|
recordedAt: z.iso.datetime(),
|
||
|
|
});
|
||
|
|
export const ResourceSchema = z.strictObject({
|
||
|
|
id: z.uuid(),
|
||
|
|
companyId: z.uuid(),
|
||
|
|
specification: ResourceSpecificationSchema,
|
||
|
|
values: ResourceInputSchema,
|
||
|
|
history: z.array(ResourceRevisionSchema).min(1),
|
||
|
|
});
|
||
|
|
export const InventoryResponseSchema = z.strictObject({
|
||
|
|
resources: z.array(ResourceSchema),
|
||
|
|
});
|
||
|
|
export const ResourceResponseSchema = z.strictObject({ resource: ResourceSchema });
|
||
|
|
export type ResourceDTO = z.infer<typeof ResourceSchema>;
|
||
|
|
export type ResourceResponseDTO = z.infer<typeof ResourceResponseSchema>;
|