All files / src/schemas/appointment appointment.schema.ts

100% Statements 9/9
100% Branches 0/0
100% Functions 0/0
100% Lines 9/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38  7x 7x 7x 7x     7x 7x             7x               7x     7x                      
import { z } from 'zod';
import { searchPaginationSchema } from '../common/common.schema';
 
export class AppointmentZODSchema {
  static readonly createAppointmentSchema = z.strictObject({
    patientId: z.string().uuid(),
    doctorId: z.string().uuid(),
    schedule: z.coerce.date(),
    reason: z.string().min(5),
    note: z.string().optional(),
  });
 
  static readonly updateAppointmentSchema = z.strictObject({
    id: z.string().uuid(),
    schedule: z.coerce.date().optional(),
    status: z.enum(['PENDING', 'SCHEDULED', 'CANCELLED']).optional(),
    reason: z.string().min(5).optional(),
    note: z.string().optional(),
    cancellationReason: z.string().optional(),
  });
 
  static readonly deleteAppointmentSchema = z.strictObject({
    id: z.string().uuid(),
  });
 
  static readonly searchAppointmentSchema = z.strictObject({
    ...searchPaginationSchema,
    patientId: z.string().uuid().optional(),
    doctorId: z.string().uuid().optional(),
    scheduleFrom: z.coerce.date().optional(),
    scheduleTo: z.coerce.date().optional(),
    status: z.enum(['PENDING', 'SCHEDULED', 'CANCELLED']).optional(),
    reason: z.string().min(5).optional(),
    note: z.string().optional(),
    cancellationReason: z.string().optional(),
  });
}