feat(backend): implement equipments entities and modify db

This commit is contained in:
Zuev
2026-02-20 02:53:47 +03:00
parent be46fa2be2
commit c552d14909
10 changed files with 431 additions and 8 deletions

View File

@@ -55,21 +55,49 @@ INSERT INTO lesson_types (name) VALUES
('Лабораторная работа')
ON CONFLICT (name) DO NOTHING;
-- Оборудование
CREATE TABLE IF NOT EXISTS equipments (
id BIGSERIAL PRIMARY KEY,
name VARCHAR(50) UNIQUE NOT NULL
);
INSERT INTO equipments (name) VALUES
('Проектор'),
('ПК'),
('Лаборатория'),
('Интерактивная доска')
ON CONFLICT (name) DO NOTHING;
-- Аудитории
CREATE TABLE IF NOT EXISTS classrooms (
id BIGSERIAL PRIMARY KEY,
name VARCHAR(50) UNIQUE NOT NULL,
capacity INT NOT NULL,
is_available BOOLEAN DEFAULT TRUE,
hardware_tags VARCHAR(255) -- например: "Проектор, ПК, Лаборатория"
is_available BOOLEAN DEFAULT TRUE
);
INSERT INTO classrooms (name, capacity, hardware_tags) VALUES
('101 Ленинская', 120, 'Проектор, Доска'),
('202 IT Lab', 20, 'ПК, Проектор, Лаборатория'),
('303 Обычная', 30, 'Доска')
INSERT INTO classrooms (name, capacity) VALUES
('101 Ленинская', 120),
('202 IT Lab', 20),
('303 Обычная', 30)
ON CONFLICT (name) DO NOTHING;
-- Привязка оборудования к аудиториям (Many-to-Many)
CREATE TABLE IF NOT EXISTS classroom_equipments (
classroom_id BIGINT NOT NULL REFERENCES classrooms(id) ON DELETE CASCADE,
equipment_id BIGINT NOT NULL REFERENCES equipments(id) ON DELETE CASCADE,
PRIMARY KEY (classroom_id, equipment_id)
);
-- Заполнение привязок оборудования (на основе ID базовых данных)
-- '101 Ленинская' -> Проектор (1), Интерактивная доска (4)
INSERT INTO classroom_equipments (classroom_id, equipment_id) VALUES
(1, 1), (1, 4),
-- '202 IT Lab' -> ПК (2), Проектор (1), Лаборатория (3)
(2, 2), (2, 1), (2, 3),
-- '303 Обычная' -> ничего
ON CONFLICT DO NOTHING;
-- ==========================================
-- Связи для преподавателей и студентов
-- ==========================================