diff --git a/backend/testutils/testdb/testdb.go b/backend/testutils/testdb/testdb.go index b3712f8..0031b74 100644 --- a/backend/testutils/testdb/testdb.go +++ b/backend/testutils/testdb/testdb.go @@ -77,6 +77,11 @@ func Migrate(t *testing.T, pool *pgxpool.Pool) { "DROP TYPE IF EXISTS booking_status CASCADE", "DROP TYPE IF EXISTS verification_purpose CASCADE", "DROP TYPE IF EXISTS admin_notification_reason CASCADE", + "DROP TYPE IF EXISTS campaign_type CASCADE", + "DROP TYPE IF EXISTS milestone_type CASCADE", + "DROP TYPE IF EXISTS milestone_unit CASCADE", + "DROP TYPE IF EXISTS discount_campaign_scope CASCADE", + "DROP TYPE IF EXISTS discount_campaign_status CASCADE", } for _, stmt := range typeDrops { if _, err := pool.Exec(ctx, stmt); err != nil { @@ -86,6 +91,9 @@ func Migrate(t *testing.T, pool *pgxpool.Pool) { // Drop all tables, sequences, and views in correct order dropOrder := []string{ + "booking_discounts", + "loyalty_redemptions", + "discount_campaigns", "forgiven_no_shows", "admin_notifications", "user_notification_preferences", @@ -187,6 +195,9 @@ func TruncateTables(t *testing.T, pool *pgxpool.Pool) { ctx := context.Background() tables := []string{ + "booking_discounts", + "loyalty_redemptions", + "discount_campaigns", "forgiven_no_shows", "user_social_logins", "verification_codes", diff --git a/init-scripts/init-script.sql b/init-scripts/init-script.sql index 4f1c8fa..b5f5a87 100644 --- a/init-scripts/init-script.sql +++ b/init-scripts/init-script.sql @@ -17,6 +17,11 @@ CREATE TYPE payment_type AS ENUM ('deposit', 'full', 'tip', 'balance', 'partial' CREATE TYPE payment_method AS ENUM ('online_square', 'in_person_card', 'cash', 'giftcard', 'discount'); CREATE TYPE payment_status AS ENUM ('pending', 'completed', 'failed', 'refunded'); CREATE TYPE booking_status AS ENUM ('pending', 'confirmed', 'in_progress', 'completed', 'client_cancelled', 'we_cancelled', 're-schedule', 'no_show', 'no_deposit'); +CREATE TYPE campaign_type AS ENUM ('time_based', 'milestone'); +CREATE TYPE milestone_type AS ENUM ('per_user_booking_count', 'global_booking_count', 'anniversary'); +CREATE TYPE milestone_unit AS ENUM ('bookings', 'months', 'years'); +CREATE TYPE discount_campaign_scope AS ENUM ('all_bookings', 'first_booking_only', 'new_customers_only'); +CREATE TYPE discount_campaign_status AS ENUM ('draft', 'active', 'completed', 'cancelled'); -- ======================================= -- SHORT ID GENERATION @@ -520,13 +525,6 @@ INSERT INTO business_settings ( CREATE TYPE admin_notification_reason AS ENUM ('pending_booking', 'cancelled_booking', 'rescheduled_booking', '1_week_no_pay', '1_month_no_pay', 'affiliate_claim', 'late_cancellation', 'no_deposit', 'deposit_paid', 'edit_request'); --- Loyalty/Discount System ENUMs -CREATE TYPE campaign_type AS ENUM ('time_based', 'milestone'); -CREATE TYPE milestone_type AS ENUM ('per_user_booking_count', 'global_booking_count', 'anniversary'); -CREATE TYPE milestone_unit AS ENUM ('bookings', 'months', 'years'); -CREATE TYPE discount_campaign_scope AS ENUM ('all_bookings', 'first_booking_only', 'new_customers_only'); -CREATE TYPE discount_campaign_status AS ENUM ('draft', 'active', 'completed', 'cancelled'); - CREATE TABLE admin_notifications ( id SERIAL PRIMARY KEY, reason admin_notification_reason NOT NULL,