Files
hotelsync/backend/migrations/038_loyalty_settings.sql

24 lines
1.1 KiB
SQL

CREATE TABLE IF NOT EXISTS loyalty_settings (
hotel_id UUID PRIMARY KEY REFERENCES hotels(id) ON DELETE CASCADE,
is_active BOOLEAN NOT NULL DEFAULT true,
points_per_ruble NUMERIC(10,4) NOT NULL DEFAULT 0.1,
point_value NUMERIC(10,4) NOT NULL DEFAULT 0.01,
expiry_months INT NOT NULL DEFAULT 12,
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS loyalty_transactions (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
hotel_id UUID NOT NULL REFERENCES hotels(id) ON DELETE CASCADE,
guest_id UUID NOT NULL REFERENCES guests(id) ON DELETE CASCADE,
amount INT NOT NULL, -- positive = accrual, negative = spend
reason VARCHAR(100) NOT NULL DEFAULT 'manual',
notes TEXT,
staff_id UUID REFERENCES users(id) ON DELETE SET NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
-- Ensure guests have loyalty columns (may already exist)
ALTER TABLE guests ADD COLUMN IF NOT EXISTS loyalty_tier VARCHAR(20) NOT NULL DEFAULT 'bronze';
ALTER TABLE guests ADD COLUMN IF NOT EXISTS loyalty_points INT NOT NULL DEFAULT 0;