CREATE TABLE IF NOT EXISTS outlets ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, address TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS categories ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, sort_order INT DEFAULT 0 ); CREATE TABLE IF NOT EXISTS products ( id INT AUTO_INCREMENT PRIMARY KEY, category_id INT, name VARCHAR(255) NOT NULL, description TEXT, price DECIMAL(10, 2) NOT NULL, image_url VARCHAR(255), FOREIGN KEY (category_id) REFERENCES categories(id) ); CREATE TABLE IF NOT EXISTS product_variants ( id INT AUTO_INCREMENT PRIMARY KEY, product_id INT, name VARCHAR(255) NOT NULL, price_adjustment DECIMAL(10, 2) DEFAULT 0.00, FOREIGN KEY (product_id) REFERENCES products(id) ); CREATE TABLE IF NOT EXISTS areas ( id INT AUTO_INCREMENT PRIMARY KEY, outlet_id INT, name VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (outlet_id) REFERENCES outlets(id) ); CREATE TABLE IF NOT EXISTS tables ( id INT AUTO_INCREMENT PRIMARY KEY, area_id INT, name VARCHAR(50) NOT NULL, capacity INT DEFAULT 4, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (area_id) REFERENCES areas(id) ); CREATE TABLE IF NOT EXISTS orders ( id INT AUTO_INCREMENT PRIMARY KEY, outlet_id INT, table_id INT, table_number VARCHAR(50), order_type ENUM('dine-in', 'delivery', 'drive-thru') DEFAULT 'dine-in', status ENUM('pending', 'preparing', 'ready', 'completed', 'cancelled') DEFAULT 'pending', total_amount DECIMAL(10, 2) NOT NULL, customer_name VARCHAR(255), customer_phone VARCHAR(50), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (outlet_id) REFERENCES outlets(id), FOREIGN KEY (table_id) REFERENCES tables(id) ); CREATE TABLE IF NOT EXISTS order_items ( id INT AUTO_INCREMENT PRIMARY KEY, order_id INT, product_id INT, variant_id INT, quantity INT NOT NULL, unit_price DECIMAL(10, 2) NOT NULL, FOREIGN KEY (order_id) REFERENCES orders(id), FOREIGN KEY (product_id) REFERENCES products(id) ); -- Loyalty CREATE TABLE IF NOT EXISTS loyalty_customers ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), email VARCHAR(255) UNIQUE, points INT DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );