metis-desk/modules/resources/src/common/index.ts
2026-10-25 01:19:17 +02:00

51 lines
2.0 KiB
TypeScript

import { z } from "zod/v4";
import { FieldTypeSchema, ResourceDefinitionSchema } from "../api/domain/resource-definition";
export type { ResourceDefinitionSpec, ResourceFieldType } from "../api/domain/resource-definition";
export { FieldTypeSchema, ResourceDefinitionSchema };
export const CatalogParamsSchema = z.strictObject({
scope: z.union([z.literal("global"), z.uuid()]),
});
export const CatalogItemParamsSchema = CatalogParamsSchema.extend({ id: z.uuid() });
export const SaveDefinitionRequestSchema = z.strictObject({ values: ResourceDefinitionSchema });
export const AvailabilityRequestSchema = z.strictObject({ active: z.boolean().nullable() });
export const CatalogItemSchema = z.strictObject({
id: z.uuid(),
companyId: z.uuid().nullable(),
builtin: z.boolean(),
builtinKey: z.string().nullable().optional(),
active: z.boolean(),
effectiveActive: z.boolean(),
overridden: z.boolean(),
values: ResourceDefinitionSchema,
bindings: z.array(z.strictObject({ id: z.uuid(), fieldId: z.uuid(), required: z.boolean() })),
});
export const CatalogResponseSchema = z.strictObject({ items: z.array(CatalogItemSchema) });
export const SaveDefinitionResponseSchema = CatalogResponseSchema.extend({ savedId: z.uuid() });
export type CatalogItemDTO = z.infer<typeof CatalogItemSchema>;
export type CatalogResponseDTO = z.infer<typeof CatalogResponseSchema>;
export type SaveDefinitionResponseDTO = z.infer<typeof SaveDefinitionResponseSchema>;
export * from "./directory-domain-options";
export type { DirectoryDomainDTO } from "./directory-domains";
export { DirectoryDomainSchema } from "./directory-domains";
export * from "./dto/application-coincidences.dto";
export * from "./dto/request/resource-application.request.dto";
export * from "./dto/response/resource-application.response.dto";
export * from "./dto/shared/application-reference.dto";
export * from "./inventory";
export * from "./network-shares";
export { resourceTemplateCapability } from "./resource-capabilities";