NoMoosh / schema_v2.sql
saadrizvi09
Updated second module
8c99398
-- ==========================================================
-- Nomoosh v2 — Additional schema for table ordering system
-- Run this in the Supabase SQL Editor AFTER schema.sql
-- ==========================================================
-- 1. Staff members (owner, chef, waiter)
CREATE TABLE IF NOT EXISTS staff (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
restaurant_id INT NOT NULL,
email VARCHAR(255) NOT NULL,
password_hash TEXT NOT NULL,
name VARCHAR(100) NOT NULL,
role VARCHAR(20) NOT NULL CHECK (role IN ('owner', 'chef', 'waiter')),
created_at TIMESTAMPTZ DEFAULT now(),
UNIQUE(restaurant_id, email),
FOREIGN KEY (restaurant_id) REFERENCES restaurants(id) ON DELETE CASCADE
);
-- 2. Add columns to restaurant_tables (safe IF NOT EXISTS)
DO $$ BEGIN
ALTER TABLE restaurant_tables ADD COLUMN status VARCHAR(20) DEFAULT 'inactive';
EXCEPTION WHEN duplicate_column THEN NULL;
END $$;
DO $$ BEGIN
ALTER TABLE restaurant_tables ADD COLUMN qr_token TEXT UNIQUE;
EXCEPTION WHEN duplicate_column THEN NULL;
END $$;
DO $$ BEGIN
ALTER TABLE restaurant_tables ADD COLUMN capacity INT DEFAULT 4;
EXCEPTION WHEN duplicate_column THEN NULL;
END $$;
-- Fill qr_token for any existing rows
UPDATE restaurant_tables SET qr_token = uuid_generate_v4()::TEXT WHERE qr_token IS NULL;
-- 3. Add columns to sessions
DO $$ BEGIN
ALTER TABLE sessions ADD COLUMN chef_eta_minutes INT;
EXCEPTION WHEN duplicate_column THEN NULL;
END $$;
DO $$ BEGIN
ALTER TABLE sessions ADD COLUMN chef_eta_set_at TIMESTAMPTZ;
EXCEPTION WHEN duplicate_column THEN NULL;
END $$;
DO $$ BEGIN
ALTER TABLE sessions ADD COLUMN payment_lock_at TIMESTAMPTZ;
EXCEPTION WHEN duplicate_column THEN NULL;
END $$;
-- 4. Add columns to orders
DO $$ BEGIN
ALTER TABLE orders ADD COLUMN table_number VARCHAR(50);
EXCEPTION WHEN duplicate_column THEN NULL;
END $$;
DO $$ BEGIN
ALTER TABLE orders ADD COLUMN restaurant_id INT REFERENCES restaurants(id);
EXCEPTION WHEN duplicate_column THEN NULL;
END $$;
-- 5. Make payments.participant_id nullable (guests may not have a tracked participant)
ALTER TABLE payments ALTER COLUMN participant_id DROP NOT NULL;