1855b374b5
Phase 2 extraction: groombook/api from groombook/app monorepo. Changes: - Move packages/db content to apps/api/src/db/ - Move packages/types content to apps/api/src/types/ - Inline database schema and migrations into api package - Update Dockerfile to build single package - Update CI workflow for single-package structure - Fix vitest.config.ts aliases Co-Authored-By: Paperclip <noreply@paperclip.ing>
21 lines
865 B
SQL
21 lines
865 B
SQL
-- Migration: 0029_db_indexes_constraints.sql
|
|
-- Add missing indexes on appointments, pets, clients tables and NOT NULL constraint on clients.email
|
|
|
|
-- Backfill NULL emails before setting NOT NULL
|
|
UPDATE clients SET email = concat('unknown-', id::text, '@placeholder.local') WHERE email IS NULL;
|
|
|
|
-- Add indexes on appointments table
|
|
CREATE INDEX idx_appointments_client_id ON appointments(client_id);
|
|
CREATE INDEX idx_appointments_staff_id ON appointments(staff_id);
|
|
CREATE INDEX idx_appointments_start_time ON appointments(start_time);
|
|
CREATE INDEX idx_appointments_status ON appointments(status);
|
|
|
|
-- Add index on pets table
|
|
CREATE INDEX idx_pets_client_id ON pets(client_id);
|
|
|
|
-- Add index on clients table
|
|
CREATE INDEX idx_clients_email ON clients(email);
|
|
|
|
-- Set NOT NULL on clients.email (after backfill)
|
|
ALTER TABLE clients ALTER COLUMN email SET NOT NULL;
|