Files
electron/backend/migrations/003_food.sql
T
2026-10-29 16:51:26 +03:00

75 lines
3.5 KiB
SQL

-- ============================================================
-- Модуль питания: категории, блюда, счета, заказы
-- ============================================================
SET NAMES utf8mb4;
-- ---------- Компания-оператор питания ----------
CREATE TABLE IF NOT EXISTS food_companies (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
is_active TINYINT(1) NOT NULL DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- ---------- Категории (Горячее, Напитки, Закуски, Суп...) ----------
CREATE TABLE IF NOT EXISTS food_categories (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
emoji VARCHAR(16) DEFAULT NULL,
sort_order INT NOT NULL DEFAULT 0,
is_active TINYINT(1) NOT NULL DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- ---------- Блюда ----------
CREATE TABLE IF NOT EXISTS food_items (
id INT AUTO_INCREMENT PRIMARY KEY,
category_id INT NOT NULL,
name VARCHAR(255) NOT NULL,
description VARCHAR(500) DEFAULT NULL,
price DECIMAL(10,2) NOT NULL DEFAULT 0,
image_url VARCHAR(500) DEFAULT NULL,
weight_grams INT DEFAULT NULL,
is_active TINYINT(1) NOT NULL DEFAULT 1,
sort_order INT NOT NULL DEFAULT 0,
KEY idx_food_items_cat (category_id),
CONSTRAINT fk_item_cat FOREIGN KEY (category_id)
REFERENCES food_categories(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- ---------- Счета питания сотрудников (по табельному) ----------
CREATE TABLE IF NOT EXISTS food_accounts (
id INT AUTO_INCREMENT PRIMARY KEY,
tnom VARCHAR(20) NOT NULL UNIQUE,
balance DECIMAL(10,2) NOT NULL DEFAULT 0,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- ---------- Заказы ----------
CREATE TABLE IF NOT EXISTS food_orders (
id INT AUTO_INCREMENT PRIMARY KEY,
tnom VARCHAR(20) NOT NULL,
total_amount DECIMAL(10,2) NOT NULL,
status ENUM('new','accepted','done','cancelled')
NOT NULL DEFAULT 'new',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP,
KEY idx_food_orders_status (status),
KEY idx_food_orders_tnom (tnom),
KEY idx_food_orders_date (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- ---------- Позиции заказа ----------
CREATE TABLE IF NOT EXISTS food_order_items (
id INT AUTO_INCREMENT PRIMARY KEY,
order_id INT NOT NULL,
item_id INT NOT NULL,
item_name VARCHAR(255) NOT NULL, -- фиксируем имя на момент заказа
unit_price DECIMAL(10,2) NOT NULL, -- и цену
quantity INT NOT NULL,
subtotal DECIMAL(10,2) NOT NULL,
KEY idx_order_items_order (order_id),
KEY idx_order_items_item (item_id),
CONSTRAINT fk_oi_order FOREIGN KEY (order_id)
REFERENCES food_orders(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;