44 lines
1.6 KiB
TypeScript
44 lines
1.6 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 ResourceReferenceSchema = z.strictObject({
|
|
id: z.uuid(),
|
|
kind: z.enum(["account", "system", "environment", "resource_type"]),
|
|
name: z.string(),
|
|
active: z.boolean(),
|
|
systemId: z.uuid().nullable(),
|
|
});
|
|
export type ResourceReferenceDTO = z.infer<typeof ResourceReferenceSchema>;
|
|
export const InventoryResponseSchema = z.strictObject({
|
|
resources: z.array(ResourceSchema),
|
|
references: z.array(ResourceReferenceSchema).optional(),
|
|
});
|
|
export const ResourceResponseSchema = z.strictObject({ resource: ResourceSchema });
|
|
export type ResourceDTO = z.infer<typeof ResourceSchema>;
|
|
export type ResourceResponseDTO = z.infer<typeof ResourceResponseSchema>;
|