init
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
-- Orders table
|
||||
CREATE TABLE orders (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
organization_id UUID NOT NULL REFERENCES organizations(id) ON DELETE CASCADE,
|
||||
outlet_id UUID NOT NULL REFERENCES outlets(id) ON DELETE CASCADE,
|
||||
user_id UUID NOT NULL REFERENCES users(id) ON DELETE RESTRICT,
|
||||
customer_id UUID,
|
||||
order_number VARCHAR(50) UNIQUE NOT NULL,
|
||||
table_number VARCHAR(20),
|
||||
order_type VARCHAR(50) NOT NULL CHECK (order_type IN ('dine_in', 'takeout', 'delivery')),
|
||||
status VARCHAR(50) DEFAULT 'pending' CHECK (status IN ('pending', 'preparing', 'ready', 'completed', 'cancelled')),
|
||||
subtotal DECIMAL(10,2) NOT NULL CHECK (subtotal >= 0),
|
||||
tax_amount DECIMAL(10,2) NOT NULL CHECK (tax_amount >= 0),
|
||||
discount_amount DECIMAL(10,2) DEFAULT 0.00 CHECK (discount_amount >= 0),
|
||||
total_amount DECIMAL(10,2) NOT NULL CHECK (total_amount >= 0),
|
||||
payment_status VARCHAR(50) DEFAULT 'pending' CHECK (payment_status IN ('pending', 'completed', 'failed', 'refunded')),
|
||||
metadata JSONB DEFAULT '{}',
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- Indexes
|
||||
CREATE INDEX idx_orders_organization_id ON orders(organization_id);
|
||||
CREATE INDEX idx_orders_outlet_id ON orders(outlet_id);
|
||||
CREATE INDEX idx_orders_user_id ON orders(user_id);
|
||||
CREATE INDEX idx_orders_order_number ON orders(order_number);
|
||||
CREATE INDEX idx_orders_order_type ON orders(order_type);
|
||||
CREATE INDEX idx_orders_status ON orders(status);
|
||||
CREATE INDEX idx_orders_payment_status ON orders(payment_status);
|
||||
CREATE INDEX idx_orders_created_at ON orders(created_at);
|
||||
Reference in New Issue
Block a user