CREATE TABLE IF NOT EXISTS `qs_restaurants` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`label` VARCHAR(255) NOT NULL,
`owner_identifier` VARCHAR(50) DEFAULT NULL,
`owner_name` VARCHAR(255) DEFAULT NULL,
`color` VARCHAR(7) DEFAULT '#3B82F6',
`zone_points` LONGTEXT DEFAULT NULL,
`fridges` LONGTEXT DEFAULT NULL,
`kiosks` LONGTEXT DEFAULT '[]',
`displays` LONGTEXT DEFAULT '[]',
`pos_terminals` LONGTEXT DEFAULT '[]',
`blip_data` LONGTEXT DEFAULT NULL,
`cooking_systems` LONGTEXT DEFAULT NULL,
`bossmenu_location` LONGTEXT DEFAULT NULL,
`delivery_location` LONGTEXT DEFAULT NULL,
`is_open` TINYINT(1) DEFAULT 1,
`image` VARCHAR(255) DEFAULT NULL,
`creator` VARCHAR(50) DEFAULT NULL,
`fries_price` INT(11) DEFAULT 0,
`fries_category_id` INT(11) DEFAULT NULL,
`beverage_settings` LONGTEXT DEFAULT NULL,
`addon_beverages` LONGTEXT DEFAULT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `owner_identifier` (`owner_identifier`),
INDEX `creator` (`creator`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
ALTER TABLE `qs_restaurants` ADD COLUMN IF NOT EXISTS `addon_beverages` LONGTEXT DEFAULT NULL AFTER `beverage_settings`;
CREATE TABLE IF NOT EXISTS `qs_restaurant_finance` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`restaurant_id` INT(11) NOT NULL,
`balance` BIGINT DEFAULT 0,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `restaurant_id` (`restaurant_id`),
FOREIGN KEY (`restaurant_id`) REFERENCES `qs_restaurants`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_restaurant_transactions` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`restaurant_id` INT(11) NOT NULL,
`type` ENUM('deposit', 'withdraw', 'sale', 'expense') NOT NULL,
`amount` BIGINT NOT NULL,
`description` VARCHAR(255) DEFAULT NULL,
`identifier` VARCHAR(50) DEFAULT NULL,
`name` VARCHAR(255) DEFAULT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `restaurant_id` (`restaurant_id`),
INDEX `type` (`type`),
FOREIGN KEY (`restaurant_id`) REFERENCES `qs_restaurants`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_restaurant_workers` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`restaurant_id` INT(11) NOT NULL,
`identifier` VARCHAR(50) NOT NULL,
`name` VARCHAR(255) NOT NULL,
`rank_id` INT(11) DEFAULT NULL,
`is_owner` TINYINT(1) DEFAULT 0,
`joined_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `restaurant_worker` (`restaurant_id`, `identifier`),
INDEX `restaurant_id` (`restaurant_id`),
FOREIGN KEY (`restaurant_id`) REFERENCES `qs_restaurants`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_restaurant_ranks` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`restaurant_id` INT(11) NOT NULL,
`label` VARCHAR(100) NOT NULL,
`grade` INT(11) DEFAULT 0,
`permissions` LONGTEXT DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `restaurant_id` (`restaurant_id`),
FOREIGN KEY (`restaurant_id`) REFERENCES `qs_restaurants`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_restaurant_recipes` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`restaurant_id` INT(11) NOT NULL,
`name` VARCHAR(100) NOT NULL,
`label` VARCHAR(255) NOT NULL,
`ingredients` LONGTEXT DEFAULT NULL,
`result_item` VARCHAR(100) DEFAULT NULL,
`result_count` INT(11) DEFAULT 1,
`prep_time` INT(11) DEFAULT 5000,
`cook_time` INT(11) DEFAULT 5000,
`pack_time` INT(11) DEFAULT 3000,
`price` INT(11) DEFAULT 0,
`category_id` INT(11) DEFAULT NULL,
`created_by` VARCHAR(50) DEFAULT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `restaurant_id` (`restaurant_id`),
INDEX `category_id` (`category_id`),
FOREIGN KEY (`restaurant_id`) REFERENCES `qs_restaurants`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_restaurant_recipe_steps` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`recipe_id` INT(11) NOT NULL,
`step_order` INT(11) NOT NULL DEFAULT 1,
`step_type` ENUM('prep', 'chop', 'marinate', 'cook', 'beverage', 'pack') NOT NULL,
`step_label` VARCHAR(100) DEFAULT NULL,
`input_item` VARCHAR(100) DEFAULT NULL,
`input_count` INT(11) DEFAULT 1,
`output_item` VARCHAR(100) NOT NULL,
`output_count` INT(11) DEFAULT 1,
`duration` INT(11) DEFAULT 5000,
`ingredients` LONGTEXT DEFAULT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `recipe_id` (`recipe_id`),
INDEX `step_order` (`step_order`),
FOREIGN KEY (`recipe_id`) REFERENCES `qs_restaurant_recipes`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_restaurant_kiosk_categories` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`restaurant_id` INT(11) NOT NULL,
`name` VARCHAR(50) NOT NULL,
`description` VARCHAR(255) DEFAULT NULL,
`icon` VARCHAR(50) DEFAULT NULL,
`image` VARCHAR(255) DEFAULT NULL,
`color` VARCHAR(50) DEFAULT 'gray',
`sort_order` INT(11) DEFAULT 0,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `restaurant_id` (`restaurant_id`),
INDEX `sort_order` (`sort_order`),
FOREIGN KEY (`restaurant_id`) REFERENCES `qs_restaurants`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_restaurant_orders` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`restaurant_id` INT(11) NOT NULL,
`order_number` INT(11) NOT NULL,
`customer_identifier` VARCHAR(100) NOT NULL,
`customer_name` VARCHAR(100) DEFAULT NULL,
`kiosk_index` INT(11) NOT NULL,
`items` LONGTEXT NOT NULL,
`total_price` INT(11) NOT NULL,
`payment_method` ENUM('cash', 'bank') DEFAULT 'cash',
`status` ENUM('pending', 'preparing', 'ready', 'completed', 'cancelled') DEFAULT 'pending',
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`completed_at` TIMESTAMP NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `restaurant_id` (`restaurant_id`),
INDEX `status` (`status`),
INDEX `order_number` (`order_number`),
INDEX `customer_identifier` (`customer_identifier`),
FOREIGN KEY (`restaurant_id`) REFERENCES `qs_restaurants`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_restaurant_burger_recipes` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`restaurant_id` INT(11) NOT NULL,
`name` VARCHAR(100) NOT NULL,
`label` VARCHAR(255) NOT NULL,
`ingredients` LONGTEXT NOT NULL,
`price` INT(11) DEFAULT 0,
`image` VARCHAR(500) DEFAULT NULL,
`category_id` INT(11) DEFAULT NULL,
`created_by` VARCHAR(50) DEFAULT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `restaurant_id` (`restaurant_id`),
INDEX `category_id` (`category_id`),
FOREIGN KEY (`restaurant_id`) REFERENCES `qs_restaurants`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_restaurant_pizza_recipes` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`restaurant_id` INT(11) NOT NULL,
`name` VARCHAR(100) NOT NULL,
`label` VARCHAR(255) NOT NULL,
`toppings` LONGTEXT NOT NULL,
`price` INT(11) DEFAULT 0,
`image` VARCHAR(500) DEFAULT NULL,
`category_id` INT(11) DEFAULT NULL,
`created_by` VARCHAR(50) DEFAULT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `restaurant_id` (`restaurant_id`),
INDEX `category_id` (`category_id`),
FOREIGN KEY (`restaurant_id`) REFERENCES `qs_restaurants`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_restaurant_allowed_items` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`item_name` VARCHAR(100) NOT NULL,
`item_label` VARCHAR(255) NOT NULL,
`shop_purchasable` TINYINT(1) DEFAULT 0,
`shop_price` INT(11) DEFAULT 0,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `item_name` (`item_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT IGNORE INTO `qs_restaurant_allowed_items` (`id`, `item_name`, `item_label`, `shop_purchasable`, `shop_price`, `created_at`) VALUES
(1, 'cooked_pizza', 'Cooked Pizza', 0, 0, '2026-02-14 05:59:13'),
(2, 'cola_drink', 'Cola', 0, 0, '2026-02-14 05:59:13'),
(3, 'raw_pizza_dough', 'Raw Pizza Dough', 1, 20, '2026-02-14 05:59:13'),
(4, 'pizza_green_pepper', 'Green Pepper', 1, 20, '2026-02-14 05:59:13'),
(5, 'pizza_mushroom', 'Mushroom', 1, 20, '2026-02-14 05:59:13'),
(6, 'burger', 'Burger', 0, 0, '2026-02-14 05:59:13'),
(7, 'burger_cheese', 'Cheese Slice', 0, 0, '2026-02-14 05:59:13'),
(8, 'pizza_green_olive', 'Green Olive', 1, 20, '2026-02-14 05:59:13'),
(9, 'tomato_slice', 'Tomato Slice', 1, 5, '2026-02-14 05:59:13'),
(10, 'burger_bun_bottom', 'Hamburger Bun (Bottom)', 1, 20, '2026-02-14 05:59:13'),
(11, 'burger_bun_top', 'Hamburger Bun (Top)', 1, 20, '2026-02-14 05:59:13'),
(12, 'pizza_pastrami', 'Pastrami', 1, 40, '2026-02-14 05:59:13'),
(13, 'burger_raw_patty', 'Raw Patty', 1, 45, '2026-02-14 05:59:13'),
(14, 'pizza_olive', 'Olive', 1, 5, '2026-02-14 05:59:13'),
(15, 'sprunk_drink', 'Sprunk', 0, 0, '2026-02-14 05:59:13'),
(16, 'onion_slice', 'Onion Ring', 1, 5, '2026-02-14 05:59:13'),
(17, 'cooked_fries', 'Cooked Fries', 0, 0, '2026-02-14 05:59:13'),
(18, 'lettuce', 'Lettuce', 1, 20, '2026-02-14 05:59:13'),
(19, 'raw_fries', 'Raw Fries', 1, 5, '2026-02-14 05:59:13'),
(20, 'orange_drink', 'Orange Juice', 0, 0, '2026-02-14 05:59:13'),
(21, 'pizza_sauce', 'Pizza Sauce', 1, 20, '2026-02-14 05:59:13'),
(22, 'pizza_pepperoni', 'Pepperoni', 1, 20, '2026-02-14 05:59:13'),
(23, 'mozzarella_cheese', 'Mozzarella Cheese', 1, 20, '2026-02-14 05:59:13');
CREATE TABLE IF NOT EXISTS `qs_restaurant_shop_orders` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`restaurant_id` INT(11) NOT NULL,
`order_number` INT(11) NOT NULL,
`player_identifier` VARCHAR(100) NOT NULL,
`player_name` VARCHAR(255) DEFAULT NULL,
`items` LONGTEXT NOT NULL,
`total_price` INT(11) NOT NULL,
`payment_method` ENUM('cash', 'bank') DEFAULT 'cash',
`status` ENUM('pending', 'delivering', 'delivered', 'claimed') DEFAULT 'pending',
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`delivered_at` TIMESTAMP NULL DEFAULT NULL,
`claimed_at` TIMESTAMP NULL DEFAULT NULL,
`claimed_by` VARCHAR(100) DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `restaurant_id` (`restaurant_id`),
INDEX `status` (`status`),
FOREIGN KEY (`restaurant_id`) REFERENCES `qs_restaurants`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_restaurants` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`label` VARCHAR(255) NOT NULL,
`owner_identifier` VARCHAR(50) DEFAULT NULL,
`owner_name` VARCHAR(255) DEFAULT NULL,
`color` VARCHAR(7) DEFAULT '#3B82F6',
`zone_points` LONGTEXT DEFAULT NULL,
`fridges` LONGTEXT DEFAULT NULL,
`kiosks` LONGTEXT DEFAULT '[]',
`displays` LONGTEXT DEFAULT '[]',
`pos_terminals` LONGTEXT DEFAULT '[]',
`blip_data` LONGTEXT DEFAULT NULL,
`cooking_systems` LONGTEXT DEFAULT NULL,
`bossmenu_location` LONGTEXT DEFAULT NULL,
`delivery_location` LONGTEXT DEFAULT NULL,
`is_open` TINYINT(1) DEFAULT 1,
`image` VARCHAR(255) DEFAULT NULL,
`creator` VARCHAR(50) DEFAULT NULL,
`fries_price` INT(11) DEFAULT 0,
`fries_category_id` INT(11) DEFAULT NULL,
`beverage_settings` LONGTEXT DEFAULT NULL,
`addon_beverages` LONGTEXT DEFAULT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `owner_identifier` (`owner_identifier`),
INDEX `creator` (`creator`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
ALTER TABLE `qs_restaurants` ADD COLUMN IF NOT EXISTS `addon_beverages` LONGTEXT DEFAULT NULL AFTER `beverage_settings`;
CREATE TABLE IF NOT EXISTS `qs_restaurant_finance` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`restaurant_id` INT(11) NOT NULL,
`balance` BIGINT DEFAULT 0,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `restaurant_id` (`restaurant_id`),
FOREIGN KEY (`restaurant_id`) REFERENCES `qs_restaurants`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_restaurant_transactions` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`restaurant_id` INT(11) NOT NULL,
`type` ENUM('deposit', 'withdraw', 'sale', 'expense') NOT NULL,
`amount` BIGINT NOT NULL,
`description` VARCHAR(255) DEFAULT NULL,
`identifier` VARCHAR(50) DEFAULT NULL,
`name` VARCHAR(255) DEFAULT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `restaurant_id` (`restaurant_id`),
INDEX `type` (`type`),
FOREIGN KEY (`restaurant_id`) REFERENCES `qs_restaurants`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_restaurant_workers` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`restaurant_id` INT(11) NOT NULL,
`identifier` VARCHAR(50) NOT NULL,
`name` VARCHAR(255) NOT NULL,
`rank_id` INT(11) DEFAULT NULL,
`is_owner` TINYINT(1) DEFAULT 0,
`joined_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `restaurant_worker` (`restaurant_id`, `identifier`),
INDEX `restaurant_id` (`restaurant_id`),
FOREIGN KEY (`restaurant_id`) REFERENCES `qs_restaurants`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_restaurant_ranks` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`restaurant_id` INT(11) NOT NULL,
`label` VARCHAR(100) NOT NULL,
`grade` INT(11) DEFAULT 0,
`permissions` LONGTEXT DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `restaurant_id` (`restaurant_id`),
FOREIGN KEY (`restaurant_id`) REFERENCES `qs_restaurants`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_restaurant_recipes` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`restaurant_id` INT(11) NOT NULL,
`name` VARCHAR(100) NOT NULL,
`label` VARCHAR(255) NOT NULL,
`ingredients` LONGTEXT DEFAULT NULL,
`result_item` VARCHAR(100) DEFAULT NULL,
`result_count` INT(11) DEFAULT 1,
`prep_time` INT(11) DEFAULT 5000,
`cook_time` INT(11) DEFAULT 5000,
`pack_time` INT(11) DEFAULT 3000,
`price` INT(11) DEFAULT 0,
`category_id` INT(11) DEFAULT NULL,
`created_by` VARCHAR(50) DEFAULT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `restaurant_id` (`restaurant_id`),
INDEX `category_id` (`category_id`),
FOREIGN KEY (`restaurant_id`) REFERENCES `qs_restaurants`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_restaurant_recipe_steps` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`recipe_id` INT(11) NOT NULL,
`step_order` INT(11) NOT NULL DEFAULT 1,
`step_type` ENUM('prep', 'chop', 'marinate', 'cook', 'beverage', 'pack') NOT NULL,
`step_label` VARCHAR(100) DEFAULT NULL,
`input_item` VARCHAR(100) DEFAULT NULL,
`input_count` INT(11) DEFAULT 1,
`output_item` VARCHAR(100) NOT NULL,
`output_count` INT(11) DEFAULT 1,
`duration` INT(11) DEFAULT 5000,
`ingredients` LONGTEXT DEFAULT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `recipe_id` (`recipe_id`),
INDEX `step_order` (`step_order`),
FOREIGN KEY (`recipe_id`) REFERENCES `qs_restaurant_recipes`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_restaurant_kiosk_categories` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`restaurant_id` INT(11) NOT NULL,
`name` VARCHAR(50) NOT NULL,
`description` VARCHAR(255) DEFAULT NULL,
`icon` VARCHAR(50) DEFAULT NULL,
`image` VARCHAR(255) DEFAULT NULL,
`color` VARCHAR(50) DEFAULT 'gray',
`sort_order` INT(11) DEFAULT 0,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `restaurant_id` (`restaurant_id`),
INDEX `sort_order` (`sort_order`),
FOREIGN KEY (`restaurant_id`) REFERENCES `qs_restaurants`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_restaurant_orders` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`restaurant_id` INT(11) NOT NULL,
`order_number` INT(11) NOT NULL,
`customer_identifier` VARCHAR(100) NOT NULL,
`customer_name` VARCHAR(100) DEFAULT NULL,
`kiosk_index` INT(11) NOT NULL,
`items` LONGTEXT NOT NULL,
`total_price` INT(11) NOT NULL,
`payment_method` ENUM('cash', 'bank') DEFAULT 'cash',
`status` ENUM('pending', 'preparing', 'ready', 'completed', 'cancelled') DEFAULT 'pending',
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`completed_at` TIMESTAMP NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `restaurant_id` (`restaurant_id`),
INDEX `status` (`status`),
INDEX `order_number` (`order_number`),
INDEX `customer_identifier` (`customer_identifier`),
FOREIGN KEY (`restaurant_id`) REFERENCES `qs_restaurants`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_restaurant_burger_recipes` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`restaurant_id` INT(11) NOT NULL,
`name` VARCHAR(100) NOT NULL,
`label` VARCHAR(255) NOT NULL,
`ingredients` LONGTEXT NOT NULL,
`price` INT(11) DEFAULT 0,
`image` VARCHAR(500) DEFAULT NULL,
`category_id` INT(11) DEFAULT NULL,
`created_by` VARCHAR(50) DEFAULT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `restaurant_id` (`restaurant_id`),
INDEX `category_id` (`category_id`),
FOREIGN KEY (`restaurant_id`) REFERENCES `qs_restaurants`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_restaurant_pizza_recipes` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`restaurant_id` INT(11) NOT NULL,
`name` VARCHAR(100) NOT NULL,
`label` VARCHAR(255) NOT NULL,
`toppings` LONGTEXT NOT NULL,
`price` INT(11) DEFAULT 0,
`image` VARCHAR(500) DEFAULT NULL,
`category_id` INT(11) DEFAULT NULL,
`created_by` VARCHAR(50) DEFAULT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `restaurant_id` (`restaurant_id`),
INDEX `category_id` (`category_id`),
FOREIGN KEY (`restaurant_id`) REFERENCES `qs_restaurants`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_restaurant_allowed_items` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`item_name` VARCHAR(100) NOT NULL,
`item_label` VARCHAR(255) NOT NULL,
`shop_purchasable` TINYINT(1) DEFAULT 0,
`shop_price` INT(11) DEFAULT 0,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `item_name` (`item_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT IGNORE INTO `qs_restaurant_allowed_items` (`id`, `item_name`, `item_label`, `shop_purchasable`, `shop_price`, `created_at`) VALUES
(1, 'cooked_pizza', 'Cooked Pizza', 0, 0, '2026-02-14 05:59:13'),
(2, 'cola_drink', 'Cola', 0, 0, '2026-02-14 05:59:13'),
(3, 'raw_pizza_dough', 'Raw Pizza Dough', 1, 20, '2026-02-14 05:59:13'),
(4, 'pizza_green_pepper', 'Green Pepper', 1, 20, '2026-02-14 05:59:13'),
(5, 'pizza_mushroom', 'Mushroom', 1, 20, '2026-02-14 05:59:13'),
(6, 'burger', 'Burger', 0, 0, '2026-02-14 05:59:13'),
(7, 'burger_cheese', 'Cheese Slice', 0, 0, '2026-02-14 05:59:13'),
(8, 'pizza_green_olive', 'Green Olive', 1, 20, '2026-02-14 05:59:13'),
(9, 'tomato_slice', 'Tomato Slice', 1, 5, '2026-02-14 05:59:13'),
(10, 'burger_bun_bottom', 'Hamburger Bun (Bottom)', 1, 20, '2026-02-14 05:59:13'),
(11, 'burger_bun_top', 'Hamburger Bun (Top)', 1, 20, '2026-02-14 05:59:13'),
(12, 'pizza_pastrami', 'Pastrami', 1, 40, '2026-02-14 05:59:13'),
(13, 'burger_raw_patty', 'Raw Patty', 1, 45, '2026-02-14 05:59:13'),
(14, 'pizza_olive', 'Olive', 1, 5, '2026-02-14 05:59:13'),
(15, 'sprunk_drink', 'Sprunk', 0, 0, '2026-02-14 05:59:13'),
(16, 'onion_slice', 'Onion Ring', 1, 5, '2026-02-14 05:59:13'),
(17, 'cooked_fries', 'Cooked Fries', 0, 0, '2026-02-14 05:59:13'),
(18, 'lettuce', 'Lettuce', 1, 20, '2026-02-14 05:59:13'),
(19, 'raw_fries', 'Raw Fries', 1, 5, '2026-02-14 05:59:13'),
(20, 'orange_drink', 'Orange Juice', 0, 0, '2026-02-14 05:59:13'),
(21, 'pizza_sauce', 'Pizza Sauce', 1, 20, '2026-02-14 05:59:13'),
(22, 'pizza_pepperoni', 'Pepperoni', 1, 20, '2026-02-14 05:59:13'),
(23, 'mozzarella_cheese', 'Mozzarella Cheese', 1, 20, '2026-02-14 05:59:13');
CREATE TABLE IF NOT EXISTS `qs_restaurant_shop_orders` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`restaurant_id` INT(11) NOT NULL,
`order_number` INT(11) NOT NULL,
`player_identifier` VARCHAR(100) NOT NULL,
`player_name` VARCHAR(255) DEFAULT NULL,
`items` LONGTEXT NOT NULL,
`total_price` INT(11) NOT NULL,
`payment_method` ENUM('cash', 'bank') DEFAULT 'cash',
`status` ENUM('pending', 'delivering', 'delivered', 'claimed') DEFAULT 'pending',
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`delivered_at` TIMESTAMP NULL DEFAULT NULL,
`claimed_at` TIMESTAMP NULL DEFAULT NULL,
`claimed_by` VARCHAR(100) DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `restaurant_id` (`restaurant_id`),
INDEX `status` (`status`),
FOREIGN KEY (`restaurant_id`) REFERENCES `qs_restaurants`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;