23 lines
937 B
SQL
23 lines
937 B
SQL
-- Users table
|
|
CREATE TABLE users (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
organization_id UUID NOT NULL REFERENCES organizations(id) ON DELETE CASCADE,
|
|
outlet_id UUID REFERENCES outlets(id) ON DELETE SET NULL,
|
|
name VARCHAR(255) NOT NULL,
|
|
email VARCHAR(255) UNIQUE NOT NULL,
|
|
password_hash VARCHAR(255) NOT NULL,
|
|
role VARCHAR(50) NOT NULL CHECK (role IN ('admin', 'manager', 'cashier', 'waiter')),
|
|
permissions JSONB DEFAULT '{}',
|
|
is_active BOOLEAN DEFAULT TRUE,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
-- Indexes
|
|
CREATE INDEX idx_users_organization_id ON users(organization_id);
|
|
CREATE INDEX idx_users_outlet_id ON users(outlet_id);
|
|
CREATE INDEX idx_users_email ON users(email);
|
|
CREATE INDEX idx_users_role ON users(role);
|
|
CREATE INDEX idx_users_is_active ON users(is_active);
|
|
CREATE INDEX idx_users_name ON users(name);
|