{ "id": "db89d732-7cd5-414e-848b-7f113dcd94c1", "prevId": "477cddf9-970f-41c5-9cad-c1ed48c2bedf", "version": "7", "dialect": "postgresql", "tables": { "public.appointment_groups": { "name": "appointment_groups", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "client_id": { "name": "client_id", "type": "uuid", "primaryKey": false, "notNull": true }, "notes": { "name": "notes", "type": "text", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" }, "updated_at": { "name": "updated_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "appointment_groups_client_id_clients_id_fk": { "name": "appointment_groups_client_id_clients_id_fk", "tableFrom": "appointment_groups", "tableTo": "clients", "columnsFrom": [ "client_id" ], "columnsTo": [ "id" ], "onDelete": "restrict", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.appointments": { "name": "appointments", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "client_id": { "name": "client_id", "type": "uuid", "primaryKey": false, "notNull": true }, "pet_id": { "name": "pet_id", "type": "uuid", "primaryKey": false, "notNull": true }, "service_id": { "name": "service_id", "type": "uuid", "primaryKey": false, "notNull": true }, "staff_id": { "name": "staff_id", "type": "uuid", "primaryKey": false, "notNull": false }, "bather_staff_id": { "name": "bather_staff_id", "type": "uuid", "primaryKey": false, "notNull": false }, "status": { "name": "status", "type": "appointment_status", "typeSchema": "public", "primaryKey": false, "notNull": true, "default": "'scheduled'" }, "start_time": { "name": "start_time", "type": "timestamp", "primaryKey": false, "notNull": true }, "end_time": { "name": "end_time", "type": "timestamp", "primaryKey": false, "notNull": true }, "notes": { "name": "notes", "type": "text", "primaryKey": false, "notNull": false }, "price_cents": { "name": "price_cents", "type": "integer", "primaryKey": false, "notNull": false }, "series_id": { "name": "series_id", "type": "uuid", "primaryKey": false, "notNull": false }, "series_index": { "name": "series_index", "type": "integer", "primaryKey": false, "notNull": false }, "group_id": { "name": "group_id", "type": "uuid", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" }, "updated_at": { "name": "updated_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "appointments_client_id_clients_id_fk": { "name": "appointments_client_id_clients_id_fk", "tableFrom": "appointments", "tableTo": "clients", "columnsFrom": [ "client_id" ], "columnsTo": [ "id" ], "onDelete": "restrict", "onUpdate": "no action" }, "appointments_pet_id_pets_id_fk": { "name": "appointments_pet_id_pets_id_fk", "tableFrom": "appointments", "tableTo": "pets", "columnsFrom": [ "pet_id" ], "columnsTo": [ "id" ], "onDelete": "restrict", "onUpdate": "no action" }, "appointments_service_id_services_id_fk": { "name": "appointments_service_id_services_id_fk", "tableFrom": "appointments", "tableTo": "services", "columnsFrom": [ "service_id" ], "columnsTo": [ "id" ], "onDelete": "restrict", "onUpdate": "no action" }, "appointments_staff_id_staff_id_fk": { "name": "appointments_staff_id_staff_id_fk", "tableFrom": "appointments", "tableTo": "staff", "columnsFrom": [ "staff_id" ], "columnsTo": [ "id" ], "onDelete": "set null", "onUpdate": "no action" }, "appointments_bather_staff_id_staff_id_fk": { "name": "appointments_bather_staff_id_staff_id_fk", "tableFrom": "appointments", "tableTo": "staff", "columnsFrom": [ "bather_staff_id" ], "columnsTo": [ "id" ], "onDelete": "set null", "onUpdate": "no action" }, "appointments_series_id_recurring_series_id_fk": { "name": "appointments_series_id_recurring_series_id_fk", "tableFrom": "appointments", "tableTo": "recurring_series", "columnsFrom": [ "series_id" ], "columnsTo": [ "id" ], "onDelete": "set null", "onUpdate": "no action" }, "appointments_group_id_appointment_groups_id_fk": { "name": "appointments_group_id_appointment_groups_id_fk", "tableFrom": "appointments", "tableTo": "appointment_groups", "columnsFrom": [ "group_id" ], "columnsTo": [ "id" ], "onDelete": "set null", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.business_settings": { "name": "business_settings", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "business_name": { "name": "business_name", "type": "text", "primaryKey": false, "notNull": true, "default": "'GroomBook'" }, "logo_base64": { "name": "logo_base64", "type": "text", "primaryKey": false, "notNull": false }, "logo_mime_type": { "name": "logo_mime_type", "type": "text", "primaryKey": false, "notNull": false }, "primary_color": { "name": "primary_color", "type": "text", "primaryKey": false, "notNull": true, "default": "'#4f8a6f'" }, "accent_color": { "name": "accent_color", "type": "text", "primaryKey": false, "notNull": true, "default": "'#8b7355'" }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" }, "updated_at": { "name": "updated_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": {}, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.clients": { "name": "clients", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "name": { "name": "name", "type": "text", "primaryKey": false, "notNull": true }, "email": { "name": "email", "type": "text", "primaryKey": false, "notNull": false }, "phone": { "name": "phone", "type": "text", "primaryKey": false, "notNull": false }, "address": { "name": "address", "type": "text", "primaryKey": false, "notNull": false }, "notes": { "name": "notes", "type": "text", "primaryKey": false, "notNull": false }, "email_opt_out": { "name": "email_opt_out", "type": "boolean", "primaryKey": false, "notNull": true, "default": false }, "status": { "name": "status", "type": "client_status", "typeSchema": "public", "primaryKey": false, "notNull": true, "default": "'active'" }, "disabled_at": { "name": "disabled_at", "type": "timestamp", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" }, "updated_at": { "name": "updated_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": {}, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.grooming_visit_logs": { "name": "grooming_visit_logs", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "pet_id": { "name": "pet_id", "type": "uuid", "primaryKey": false, "notNull": true }, "appointment_id": { "name": "appointment_id", "type": "uuid", "primaryKey": false, "notNull": false }, "staff_id": { "name": "staff_id", "type": "uuid", "primaryKey": false, "notNull": false }, "cut_style": { "name": "cut_style", "type": "text", "primaryKey": false, "notNull": false }, "products_used": { "name": "products_used", "type": "text", "primaryKey": false, "notNull": false }, "notes": { "name": "notes", "type": "text", "primaryKey": false, "notNull": false }, "groomed_at": { "name": "groomed_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "grooming_visit_logs_pet_id_pets_id_fk": { "name": "grooming_visit_logs_pet_id_pets_id_fk", "tableFrom": "grooming_visit_logs", "tableTo": "pets", "columnsFrom": [ "pet_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "grooming_visit_logs_appointment_id_appointments_id_fk": { "name": "grooming_visit_logs_appointment_id_appointments_id_fk", "tableFrom": "grooming_visit_logs", "tableTo": "appointments", "columnsFrom": [ "appointment_id" ], "columnsTo": [ "id" ], "onDelete": "set null", "onUpdate": "no action" }, "grooming_visit_logs_staff_id_staff_id_fk": { "name": "grooming_visit_logs_staff_id_staff_id_fk", "tableFrom": "grooming_visit_logs", "tableTo": "staff", "columnsFrom": [ "staff_id" ], "columnsTo": [ "id" ], "onDelete": "set null", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.impersonation_audit_logs": { "name": "impersonation_audit_logs", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "session_id": { "name": "session_id", "type": "uuid", "primaryKey": false, "notNull": true }, "action": { "name": "action", "type": "text", "primaryKey": false, "notNull": true }, "page_visited": { "name": "page_visited", "type": "text", "primaryKey": false, "notNull": false }, "metadata": { "name": "metadata", "type": "jsonb", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "impersonation_audit_logs_session_id_idx": { "name": "impersonation_audit_logs_session_id_idx", "columns": [ { "expression": "session_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "impersonation_audit_logs_session_id_impersonation_sessions_id_fk": { "name": "impersonation_audit_logs_session_id_impersonation_sessions_id_fk", "tableFrom": "impersonation_audit_logs", "tableTo": "impersonation_sessions", "columnsFrom": [ "session_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.impersonation_sessions": { "name": "impersonation_sessions", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "staff_id": { "name": "staff_id", "type": "uuid", "primaryKey": false, "notNull": true }, "client_id": { "name": "client_id", "type": "uuid", "primaryKey": false, "notNull": true }, "reason": { "name": "reason", "type": "text", "primaryKey": false, "notNull": false }, "status": { "name": "status", "type": "impersonation_session_status", "typeSchema": "public", "primaryKey": false, "notNull": true, "default": "'active'" }, "started_at": { "name": "started_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" }, "ended_at": { "name": "ended_at", "type": "timestamp", "primaryKey": false, "notNull": false }, "expires_at": { "name": "expires_at", "type": "timestamp", "primaryKey": false, "notNull": true }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "impersonation_sessions_staff_id_status_idx": { "name": "impersonation_sessions_staff_id_status_idx", "columns": [ { "expression": "staff_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "status", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "impersonation_sessions_client_id_idx": { "name": "impersonation_sessions_client_id_idx", "columns": [ { "expression": "client_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "impersonation_sessions_staff_id_staff_id_fk": { "name": "impersonation_sessions_staff_id_staff_id_fk", "tableFrom": "impersonation_sessions", "tableTo": "staff", "columnsFrom": [ "staff_id" ], "columnsTo": [ "id" ], "onDelete": "restrict", "onUpdate": "no action" }, "impersonation_sessions_client_id_clients_id_fk": { "name": "impersonation_sessions_client_id_clients_id_fk", "tableFrom": "impersonation_sessions", "tableTo": "clients", "columnsFrom": [ "client_id" ], "columnsTo": [ "id" ], "onDelete": "restrict", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.invoice_line_items": { "name": "invoice_line_items", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "invoice_id": { "name": "invoice_id", "type": "uuid", "primaryKey": false, "notNull": true }, "description": { "name": "description", "type": "text", "primaryKey": false, "notNull": true }, "quantity": { "name": "quantity", "type": "integer", "primaryKey": false, "notNull": true, "default": 1 }, "unit_price_cents": { "name": "unit_price_cents", "type": "integer", "primaryKey": false, "notNull": true }, "total_cents": { "name": "total_cents", "type": "integer", "primaryKey": false, "notNull": true }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "invoice_line_items_invoice_id_invoices_id_fk": { "name": "invoice_line_items_invoice_id_invoices_id_fk", "tableFrom": "invoice_line_items", "tableTo": "invoices", "columnsFrom": [ "invoice_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.invoice_tip_splits": { "name": "invoice_tip_splits", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "invoice_id": { "name": "invoice_id", "type": "uuid", "primaryKey": false, "notNull": true }, "staff_id": { "name": "staff_id", "type": "uuid", "primaryKey": false, "notNull": false }, "staff_name": { "name": "staff_name", "type": "text", "primaryKey": false, "notNull": true }, "share_pct": { "name": "share_pct", "type": "numeric(5, 2)", "primaryKey": false, "notNull": true }, "share_cents": { "name": "share_cents", "type": "integer", "primaryKey": false, "notNull": true }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "invoice_tip_splits_invoice_id_invoices_id_fk": { "name": "invoice_tip_splits_invoice_id_invoices_id_fk", "tableFrom": "invoice_tip_splits", "tableTo": "invoices", "columnsFrom": [ "invoice_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "invoice_tip_splits_staff_id_staff_id_fk": { "name": "invoice_tip_splits_staff_id_staff_id_fk", "tableFrom": "invoice_tip_splits", "tableTo": "staff", "columnsFrom": [ "staff_id" ], "columnsTo": [ "id" ], "onDelete": "set null", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.invoices": { "name": "invoices", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "appointment_id": { "name": "appointment_id", "type": "uuid", "primaryKey": false, "notNull": false }, "client_id": { "name": "client_id", "type": "uuid", "primaryKey": false, "notNull": true }, "subtotal_cents": { "name": "subtotal_cents", "type": "integer", "primaryKey": false, "notNull": true }, "tax_cents": { "name": "tax_cents", "type": "integer", "primaryKey": false, "notNull": true, "default": 0 }, "tip_cents": { "name": "tip_cents", "type": "integer", "primaryKey": false, "notNull": true, "default": 0 }, "total_cents": { "name": "total_cents", "type": "integer", "primaryKey": false, "notNull": true }, "status": { "name": "status", "type": "invoice_status", "typeSchema": "public", "primaryKey": false, "notNull": true, "default": "'draft'" }, "payment_method": { "name": "payment_method", "type": "payment_method", "typeSchema": "public", "primaryKey": false, "notNull": false }, "paid_at": { "name": "paid_at", "type": "timestamp", "primaryKey": false, "notNull": false }, "notes": { "name": "notes", "type": "text", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" }, "updated_at": { "name": "updated_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "invoices_appointment_id_appointments_id_fk": { "name": "invoices_appointment_id_appointments_id_fk", "tableFrom": "invoices", "tableTo": "appointments", "columnsFrom": [ "appointment_id" ], "columnsTo": [ "id" ], "onDelete": "restrict", "onUpdate": "no action" }, "invoices_client_id_clients_id_fk": { "name": "invoices_client_id_clients_id_fk", "tableFrom": "invoices", "tableTo": "clients", "columnsFrom": [ "client_id" ], "columnsTo": [ "id" ], "onDelete": "restrict", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.pets": { "name": "pets", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "client_id": { "name": "client_id", "type": "uuid", "primaryKey": false, "notNull": true }, "name": { "name": "name", "type": "text", "primaryKey": false, "notNull": true }, "species": { "name": "species", "type": "text", "primaryKey": false, "notNull": true }, "breed": { "name": "breed", "type": "text", "primaryKey": false, "notNull": false }, "weight_kg": { "name": "weight_kg", "type": "numeric(5, 2)", "primaryKey": false, "notNull": false }, "date_of_birth": { "name": "date_of_birth", "type": "timestamp", "primaryKey": false, "notNull": false }, "health_alerts": { "name": "health_alerts", "type": "text", "primaryKey": false, "notNull": false }, "grooming_notes": { "name": "grooming_notes", "type": "text", "primaryKey": false, "notNull": false }, "cut_style": { "name": "cut_style", "type": "text", "primaryKey": false, "notNull": false }, "shampoo_preference": { "name": "shampoo_preference", "type": "text", "primaryKey": false, "notNull": false }, "special_care_notes": { "name": "special_care_notes", "type": "text", "primaryKey": false, "notNull": false }, "custom_fields": { "name": "custom_fields", "type": "jsonb", "primaryKey": false, "notNull": true, "default": "'{}'::jsonb" }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" }, "updated_at": { "name": "updated_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "pets_client_id_clients_id_fk": { "name": "pets_client_id_clients_id_fk", "tableFrom": "pets", "tableTo": "clients", "columnsFrom": [ "client_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.recurring_series": { "name": "recurring_series", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "frequency_weeks": { "name": "frequency_weeks", "type": "integer", "primaryKey": false, "notNull": true }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": {}, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.reminder_logs": { "name": "reminder_logs", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "appointment_id": { "name": "appointment_id", "type": "uuid", "primaryKey": false, "notNull": true }, "reminder_type": { "name": "reminder_type", "type": "text", "primaryKey": false, "notNull": true }, "sent_at": { "name": "sent_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "reminder_logs_appointment_id_appointments_id_fk": { "name": "reminder_logs_appointment_id_appointments_id_fk", "tableFrom": "reminder_logs", "tableTo": "appointments", "columnsFrom": [ "appointment_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "reminder_logs_appointment_id_reminder_type_unique": { "name": "reminder_logs_appointment_id_reminder_type_unique", "nullsNotDistinct": false, "columns": [ "appointment_id", "reminder_type" ] } }, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.services": { "name": "services", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "name": { "name": "name", "type": "text", "primaryKey": false, "notNull": true }, "description": { "name": "description", "type": "text", "primaryKey": false, "notNull": false }, "base_price_cents": { "name": "base_price_cents", "type": "integer", "primaryKey": false, "notNull": true }, "duration_minutes": { "name": "duration_minutes", "type": "integer", "primaryKey": false, "notNull": true }, "active": { "name": "active", "type": "boolean", "primaryKey": false, "notNull": true, "default": true }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" }, "updated_at": { "name": "updated_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": {}, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.staff": { "name": "staff", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "name": { "name": "name", "type": "text", "primaryKey": false, "notNull": true }, "email": { "name": "email", "type": "text", "primaryKey": false, "notNull": true }, "oidc_sub": { "name": "oidc_sub", "type": "text", "primaryKey": false, "notNull": false }, "role": { "name": "role", "type": "staff_role", "typeSchema": "public", "primaryKey": false, "notNull": true, "default": "'groomer'" }, "active": { "name": "active", "type": "boolean", "primaryKey": false, "notNull": true, "default": true }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" }, "updated_at": { "name": "updated_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": {}, "compositePrimaryKeys": {}, "uniqueConstraints": { "staff_email_unique": { "name": "staff_email_unique", "nullsNotDistinct": false, "columns": [ "email" ] }, "staff_oidc_sub_unique": { "name": "staff_oidc_sub_unique", "nullsNotDistinct": false, "columns": [ "oidc_sub" ] } }, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false } }, "enums": { "public.appointment_status": { "name": "appointment_status", "schema": "public", "values": [ "scheduled", "confirmed", "in_progress", "completed", "cancelled", "no_show" ] }, "public.client_status": { "name": "client_status", "schema": "public", "values": [ "active", "disabled" ] }, "public.impersonation_session_status": { "name": "impersonation_session_status", "schema": "public", "values": [ "active", "ended", "expired" ] }, "public.invoice_status": { "name": "invoice_status", "schema": "public", "values": [ "draft", "pending", "paid", "void" ] }, "public.payment_method": { "name": "payment_method", "schema": "public", "values": [ "cash", "card", "check", "other" ] }, "public.staff_role": { "name": "staff_role", "schema": "public", "values": [ "groomer", "receptionist", "manager" ] } }, "schemas": {}, "sequences": {}, "roles": {}, "policies": {}, "views": {}, "_meta": { "columns": {}, "schemas": {}, "tables": {} } }