feat(GRO-1174): persist petSizeCategory and petCoatType from booking

- Add petSizeCategory and petCoatType to bookingSchema zod validator (optional)
- Save coatType to pets row on booking creation
- Add coatType and petSizeCategory columns to pets DB schema
- Add coatType and petSizeCategory to Pet interface in @groombook/types

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-20 04:40:42 +00:00
committed by Flea Flicker [agent]
parent 539ef21d89
commit faf7def77d
3 changed files with 7 additions and 0 deletions
+2
View File
@@ -142,6 +142,8 @@ export const pets = pgTable(
cutStyle: text("cut_style"),
shampooPreference: text("shampoo_preference"),
specialCareNotes: text("special_care_notes"),
coatType: text("coat_type"),
petSizeCategory: text("pet_size_category"),
customFields: jsonb("custom_fields").$type<Record<string, string>>().notNull().default({}),
photoKey: text("photo_key"),
photoUploadedAt: timestamp("photo_uploaded_at"),
+2
View File
@@ -39,6 +39,8 @@ export interface Pet {
cutStyle: string | null;
shampooPreference: string | null;
specialCareNotes: string | null;
coatType: string | null;
petSizeCategory: string | null;
customFields: Record<string, string>;
photoKey?: string;
photoUploadedAt?: string;
+3
View File
@@ -112,6 +112,8 @@ const bookingSchema = z.object({
petName: z.string().min(1).max(200),
petSpecies: z.string().min(1).max(100),
petBreed: z.string().max(100).optional(),
petSizeCategory: z.string().max(50).optional(),
petCoatType: z.string().max(50).optional(),
notes: z.string().max(2000).optional(),
});
@@ -191,6 +193,7 @@ bookRouter.post(
name: body.petName,
species: body.petSpecies,
breed: body.petBreed ?? null,
coatType: body.petCoatType ?? null,
})
.returning();
const pet = petInserted[0];