Initial commit
This commit is contained in:
83
packages/api-contract/src/complex.ts
Normal file
83
packages/api-contract/src/complex.ts
Normal file
@@ -0,0 +1,83 @@
|
||||
import { z } from 'zod'
|
||||
|
||||
export const complexSchema = z.object({
|
||||
id: z.uuid(),
|
||||
complexName: z.string(),
|
||||
physicalAddress: z.string().nullable(),
|
||||
complexSlug: z.string(),
|
||||
adminEmail: z.email(),
|
||||
planCode: z.string().max(10).nullable(),
|
||||
createdAt: z.string().datetime(),
|
||||
updatedAt: z.string().datetime(),
|
||||
})
|
||||
|
||||
export const createComplexSchema = z.object({
|
||||
complexName: z
|
||||
.string()
|
||||
.trim()
|
||||
.min(3, 'El nombre del complejo debe tener al menos 3 caracteres.')
|
||||
.max(120, 'El nombre del complejo no puede superar los 120 caracteres.'),
|
||||
physicalAddress: z
|
||||
.string()
|
||||
.trim()
|
||||
.min(5, 'La direccion debe tener al menos 5 caracteres.')
|
||||
.max(200, 'La direccion no puede superar los 200 caracteres.'),
|
||||
planCode: z
|
||||
.string()
|
||||
.trim()
|
||||
.min(1, 'El planCode no puede estar vacío.')
|
||||
.max(10, 'El planCode no puede superar los 10 caracteres.')
|
||||
.optional(),
|
||||
})
|
||||
|
||||
export const updateComplexSchema = z
|
||||
.object({
|
||||
complexName: z
|
||||
.string()
|
||||
.trim()
|
||||
.min(3, 'El nombre del complejo debe tener al menos 3 caracteres.')
|
||||
.max(120, 'El nombre del complejo no puede superar los 120 caracteres.')
|
||||
.optional(),
|
||||
physicalAddress: z
|
||||
.string()
|
||||
.trim()
|
||||
.min(5, 'La direccion debe tener al menos 5 caracteres.')
|
||||
.max(200, 'La direccion no puede superar los 200 caracteres.')
|
||||
.nullable()
|
||||
.optional(),
|
||||
complexSlug: z
|
||||
.string()
|
||||
.trim()
|
||||
.min(3, 'El slug del complejo debe tener al menos 3 caracteres.')
|
||||
.max(120, 'El slug del complejo no puede superar los 120 caracteres.')
|
||||
.optional(),
|
||||
adminEmail: z.email('El adminEmail debe ser un email válido.').optional(),
|
||||
planCode: z
|
||||
.string()
|
||||
.trim()
|
||||
.min(1, 'El planCode no puede estar vacío.')
|
||||
.max(10, 'El planCode no puede superar los 10 caracteres.')
|
||||
.nullable()
|
||||
.optional(),
|
||||
})
|
||||
.refine(
|
||||
(payload) =>
|
||||
Boolean(
|
||||
payload.complexName ||
|
||||
payload.physicalAddress !== undefined ||
|
||||
payload.complexSlug ||
|
||||
payload.adminEmail ||
|
||||
payload.planCode !== undefined,
|
||||
),
|
||||
{
|
||||
message: 'Debes enviar al menos un campo para actualizar.',
|
||||
},
|
||||
)
|
||||
|
||||
export type Complex = z.infer<typeof complexSchema>
|
||||
export type CreateComplexInput = z.infer<typeof createComplexSchema>
|
||||
export type UpdateComplexInput = z.infer<typeof updateComplexSchema>
|
||||
export type CreateComplexPayload = CreateComplexInput
|
||||
export type CreateComplexResponse = Complex
|
||||
export type UpdateComplexPayload = UpdateComplexInput
|
||||
export type UpdateComplexResponse = Complex
|
||||
Reference in New Issue
Block a user