добавил заполнение

This commit is contained in:
Андрей Дувакин 2024-04-21 18:09:57 +05:00
parent b4a98e1bb6
commit 718e53ac22
2 changed files with 358 additions and 1 deletions

View File

@ -82,6 +82,9 @@ class Director(Model):
max_length=100, max_length=100,
) )
def __str__(self):
return f'{self.last_name} {self.first_name}'
class Meta: class Meta:
db_table = 'films_directors' db_table = 'films_directors'
verbose_name = 'Режиссер' verbose_name = 'Режиссер'
@ -101,6 +104,9 @@ class Actor(Model):
max_length=100, max_length=100,
) )
def __str__(self):
return f'{self.last_name} {self.first_name}'
class Meta: class Meta:
db_table = 'films_actors' db_table = 'films_actors'
verbose_name = 'Актер' verbose_name = 'Актер'
@ -114,6 +120,9 @@ class Country(Model):
max_length=500, max_length=500,
) )
def __str__(self):
return self.name
class Meta: class Meta:
db_table = 'films_countries' db_table = 'films_countries'
verbose_name = 'Страна' verbose_name = 'Страна'
@ -189,7 +198,7 @@ class Film(Model):
) )
countries = ManyToManyField( countries = ManyToManyField(
Director, Country,
related_name='country_films', related_name='country_films',
related_query_name='country_films', related_query_name='country_films',
) )

View File

@ -0,0 +1,348 @@
INSERT INTO films_genres (name) VALUES
('Боевик'),
('Комедия'),
('Драма'),
('Фантастика'),
('Ужасы'),
('Триллер'),
('Мелодрама'),
('Приключения'),
('Фэнтези'),
('Мистика'),
('Детектив'),
('Анимация'),
('Документальный'),
('Исторический'),
('Вестерн');
INSERT INTO films_films (name, duration, release_date) VALUES
('Звёздные войны: Эпизод IV Новая надежда', 121, '1977-05-25'),
('Властелин колец: Братство Кольца', 178, '2001-12-19'),
('Зеленая миля', 189, '1999-12-10'),
('Форрест Гамп', 142, '1994-06-23'),
('Побег из Шоушенка', 142, '1994-09-10'),
('Начало', 148, '2010-07-16'),
('Матрица', 136, '1999-03-31'),
('Властелин колец: Возвращение Короля', 201, '2003-12-17'),
('Интерстеллар', 169, '2014-11-06'),
('1+1', 112, '2011-11-02'),
('Криминальное чтиво', 154, '1994-09-10'),
('Король Лев', 88, '1994-06-15'),
('Бойцовский клуб', 139, '1999-10-15'),
('Темный рыцарь', 152, '2008-07-18'),
('Гладиатор', 155, '2000-05-01'),
('Пираты Карибского моря: Проклятие Черной жемчужины', 143, '2003-07-09'),
('Хороший, плохой, злой', 161, '1966-12-23'),
('Леон', 110, '1994-09-14'),
('Терминатор 2: Судный день', 137, '1991-07-03'),
('ВАЛЛ·И', 98, '2008-06-27'),
('Джанго освобожденный', 165, '2012-12-25'),
('Исчезнувшая', 145, '2014-10-02'),
('Храброе сердце', 177, '1995-09-08'),
('Гарри Поттер и Философский камень', 152, '2001-11-16'),
('Индиана Джонс: В поисках утраченного ковчега', 115, '1981-06-12'),
('Красота по-американски', 122, '1999-09-08'),
('Трасса 60', 92, '2001-02-09'),
('Храбрая сердцем', 93, '2012-06-22'),
('Кунг-фу Панда', 92, '2008-06-05'),
('Рататуй', 111, '2007-06-28'),
('Голодные игры', 142, '2012-03-12'),
('Мадагаскар', 86, '2005-05-25'),
('Человек-паук', 121, '2002-05-03'),
('Кунг-фу Панда 2', 91, '2011-05-26'),
('Мечтатели', 127, '2003-11-19'),
('Гарри Поттер и узник Азкабана', 142, '2004-05-31'),
('Люди Икс', 104, '2000-07-13'),
('Хранители', 162, '2009-03-06'),
('Трансформеры', 144, '2007-06-27'),
('Темный рыцарь: Возрождение легенды', 164, '2012-07-16');
INSERT INTO films_films_genres (film_id, genre_id) VALUES
(1, 4), -- Звёздные войны: Эпизод IV Новая надежда - Фантастика
(1, 7), -- Звёздные войны: Эпизод IV Новая надежда - Приключения
(2, 4), -- Властелин колец: Братство Кольца - Фантастика
(2, 7), -- Властелин колец: Братство Кольца - Приключения
(3, 3), -- Зеленая миля - Драма
(4, 3), -- Форрест Гамп - Драма
(5, 3), -- Побег из Шоушенка - Драма
(6, 4), -- Начало - Фантастика
(6, 5), -- Начало - Триллер
(7, 4), -- Матрица - Фантастика
(8, 4), -- Властелин колец: Возвращение Короля - Фантастика
(8, 7), -- Властелин колец: Возвращение Короля - Приключения
(9, 4), -- Интерстеллар - Фантастика
(9, 3), -- Интерстеллар - Драма
(10, 3), -- 1+1 - Драма
(10, 8), -- 1+1 - Мелодрама
(11, 5), -- Криминальное чтиво - Ужасы
(12, 7), -- Король Лев - Приключения
(13, 6), -- Бойцовский клуб - Триллер
(13, 5), -- Бойцовский клуб - Ужасы
(14, 6), -- Темный рыцарь - Триллер
(14, 5), -- Темный рыцарь - Ужасы
(15, 6), -- Гладиатор - Триллер
(16, 7), -- Пираты Карибского моря: Проклятие Черной жемчужины - Приключения
(17, 8), -- Хороший, плохой, злой - Мелодрама
(17, 2), -- Хороший, плохой, злой - Комедия
(18, 9), -- Леон - Фэнтези
(18, 6), -- Леон - Триллер
(19, 9), -- Терминатор 2: Судный день - Фэнтези
(19, 4), -- Терминатор 2: Судный день - Фантастика
(20, 1), -- ВАЛЛ·И - Боевик
(20, 4), -- ВАЛЛ·И - Фантастика
(21, 6), -- Джанго освобожденный - Триллер
(22, 6), -- Исчезнувшая - Триллер
(23, 6), -- Храброе сердце - Триллер
(24, 7), -- Гарри Поттер и Философский камень - Приключения
(24, 9), -- Гарри Поттер и Философский камень - Фэнтези
(25, 6), -- Индиана Джонс: В поисках утраченного ковчега - Триллер
(25, 7), -- Индиана Джонс: В поисках утраченного ковчега - Приключения
(26, 8), -- Красота по-американски - Мелодрама
(26, 2), -- Красота по-американски - Комедия
(27, 1), -- Трасса 60 - Боевик
(28, 9), -- Храбрая сердцем - Фэнтези
(28, 6), -- Храбрая сердцем - Триллер
(29, 10), -- Кунг-фу Панда - Мистика
(29, 11), -- Кунг-фу Панда - Детектив
(30, 10), -- Рататуй - Мистика
(30, 11), -- Рататуй - Детектив
(31, 11), -- Голодные игры - Детектив
(31, 6), -- Голодные игры - Триллер
(32, 10), -- Мадагаскар - Мистика
(32, 11), -- Мадагаскар - Детектив
(33, 12), -- Человек-паук - Анимация
(33, 1), -- Человек-паук - Боевик
(34, 10), -- Кунг-фу Панда 2 - Мистика
(34, 11), -- Кунг-фу Панда 2 - Детектив
(35, 3), -- Мечтатели - Драма
(36, 4), -- Гарри Поттер и узник Азкабана - Фантастика
(36, 7), -- Гарри Поттер и узник Азкабана - Приключения
(37, 1), -- Люди Икс - Боевик
(37, 4), -- Люди Икс - Фантастика
(38, 7), -- Хранители - Приключения
(38, 4), -- Хранители - Фантастика
(39, 1), -- Трансформеры - Боевик
(39, 4), -- Трансформеры - Фантастика
(40, 6), -- Темный рыцарь: Возрождение легенды - Триллер
(40, 7); -- Темный рыцарь: Возрождение легенды - Приключения
UPDATE films_films
SET description =
CASE
WHEN name = 'Звёздные войны: Эпизод IV Новая надежда' THEN 'Описание Звёздные войны: Эпизод IV Новая надежда'
WHEN name = 'Властелин колец: Братство Кольца' THEN 'Описание Властелин колец: Братство Кольца'
WHEN name = 'Зеленая миля' THEN 'Описание Зеленая миля'
WHEN name = 'Форрест Гамп' THEN 'Описание Форрест Гамп'
WHEN name = 'Побег из Шоушенка' THEN 'Описание Побег из Шоушенка'
WHEN name = 'Начало' THEN 'Описание Начало'
WHEN name = 'Матрица' THEN 'Описание Матрица'
WHEN name = 'Властелин колец: Возвращение Короля' THEN 'Описание Властелин колец: Возвращение Короля'
WHEN name = 'Интерстеллар' THEN 'Описание Интерстеллар'
WHEN name = '1+1' THEN 'Описание 1+1'
WHEN name = 'Криминальное чтиво' THEN 'Описание Криминальное чтиво'
WHEN name = 'Король Лев' THEN 'Описание Король Лев'
WHEN name = 'Бойцовский клуб' THEN 'Описание Бойцовский клуб'
WHEN name = 'Темный рыцарь' THEN 'Описание Темный рыцарь'
WHEN name = 'Гладиатор' THEN 'Описание Гладиатор'
WHEN name = 'Пираты Карибского моря: Проклятие Черной жемчужины' THEN 'Описание Пираты Карибского моря: Проклятие Черной жемчужины'
WHEN name = 'Хороший, плохой, злой' THEN 'Описание Хороший, плохой, злой'
WHEN name = 'Леон' THEN 'Описание Леон'
WHEN name = 'Терминатор 2: Судный день' THEN 'Описание Терминатор 2: Судный день'
WHEN name = 'ВАЛЛ·И' THEN 'Описание ВАЛЛ·И'
WHEN name = 'Джанго освобожденный' THEN 'Описание Джанго освобожденный'
WHEN name = 'Исчезнувшая' THEN 'Описание Исчезнувшая'
WHEN name = 'Храброе сердце' THEN 'Описание Храброе сердце'
WHEN name = 'Гарри Поттер и Философский камень' THEN 'Описание Гарри Поттер и Философский камень'
WHEN name = 'Индиана Джонс: В поисках утраченного ковчега' THEN 'Описание Индиана Джонс: В поисках утраченного ковчега'
WHEN name = 'Красота по-американски' THEN 'Описание Красота по-американски'
WHEN name = 'Трасса 60' THEN 'Описание Трасса 60'
WHEN name = 'Храбрая сердцем' THEN 'Описание Храбрая сердцем'
WHEN name = 'Кунг-фу Панда' THEN 'Описание Кунг-фу Панда'
WHEN name = 'Рататуй' THEN 'Описание Рататуй'
WHEN name = 'Голодные игры' THEN 'Описание Голодные игры'
WHEN name = 'Мадагаскар' THEN 'Описание Мадагаскар'
WHEN name = 'Человек-паук' THEN 'Описание Человек-паук'
WHEN name = 'Кунг-фу Панда 2' THEN 'Описание Кунг-фу Панда 2'
WHEN name = 'Мечтатели' THEN 'Описание Мечтатели'
WHEN name = 'Гарри Поттер и узник Азкабана' THEN 'Описание Гарри Поттер и узник Азкабана'
WHEN name = 'Люди Икс' THEN 'Описание Люди Икс'
WHEN name = 'Хранители' THEN 'Описание Хранители'
WHEN name = 'Трансформеры' THEN 'Описание Трансформеры'
WHEN name = 'Темный рыцарь: Возрождение легенды' THEN 'Описание Темный рыцарь: Возрождение легенды'
END;
-- Заполнение таблицы timetable_auditoriums
INSERT INTO timetable_auditoriums (number, row_count) VALUES
('Зал 1', 10), -- Зал 1, 10 рядов
('Зал 2', 8), -- Зал 2, 8 рядов
('Зал 3', 12), -- Зал 3, 12 рядов
('Зал 4', 9), -- Зал 4, 9 рядов
('Зал 5', 11), -- Зал 5, 11 рядов
('Зал 6', 7), -- Зал 6, 7 рядов
('Зал 7', 10); -- Зал 7, 10 рядов
-- Предполагается, что в каждом зале 10 рядов и в каждом ряду 10 кресел.
-- Создаем вспомогательную таблицу numbers с числами от 1 до 10
CREATE TABLE numbers (n INTEGER PRIMARY KEY);
INSERT INTO numbers (n) VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
-- Вставляем данные в таблицу timetable_rows для каждого зала
-- Предполагается, что в каждом зале 10 рядов и в каждом ряду 10 кресел.
-- Для Зала 1
INSERT INTO timetable_rows (row_number, column_count, auditorium_id)
SELECT
n AS row_number,
10 AS column_count, -- Количество кресел в ряду
1 AS auditorium_id -- ID Зала 1
FROM
numbers;
-- Для Зала 2
INSERT INTO timetable_rows (row_number, column_count, auditorium_id)
SELECT
n AS row_number,
10 AS column_count, -- Количество кресел в ряду
2 AS auditorium_id -- ID Зала 2
FROM
numbers;
-- Для Зала 3
INSERT INTO timetable_rows (row_number, column_count, auditorium_id)
SELECT
n AS row_number,
10 AS column_count, -- Количество кресел в ряду
3 AS auditorium_id -- ID Зала 3
FROM
numbers;
-- Для Зала 4
INSERT INTO timetable_rows (row_number, column_count, auditorium_id)
SELECT
n AS row_number,
10 AS column_count, -- Количество кресел в ряду
4 AS auditorium_id -- ID Зала 4
FROM
numbers;
-- Для Зала 5
INSERT INTO timetable_rows (row_number, column_count, auditorium_id)
SELECT
n AS row_number,
10 AS column_count, -- Количество кресел в ряду
5 AS auditorium_id -- ID Зала 5
FROM
numbers;
-- Для Зала 6
INSERT INTO timetable_rows (row_number, column_count, auditorium_id)
SELECT
n AS row_number,
10 AS column_count, -- Количество кресел в ряду
6 AS auditorium_id -- ID Зала 6
FROM
numbers;
-- Для Зала 7
INSERT INTO timetable_rows (row_number, column_count, auditorium_id)
SELECT
n AS row_number,
10 AS column_count, -- Количество кресел в ряду
7 AS auditorium_id -- ID Зала 7
FROM
numbers;
-- Определим временной промежуток в рамках рабочего времени кинотеатра (8:00 - 22:00)
WITH RECURSIVE session_times AS (
SELECT strftime('%Y-%m-%d %H:%M', 'now', 'start of day', '+8 hours') AS start_time
UNION ALL
SELECT strftime('%Y-%m-%d %H:%M', start_time, '+2 hours') FROM session_times
WHERE start_time < strftime('%Y-%m-%d %H:%M', 'now', 'start of day', '+22 hours')
)
--INSERT INTO timetable_film_sessions (start_datetime, price, auditorium_id, film_id)
SELECT
CASE
WHEN MAX(end_datetime) IS NULL THEN start_datetime
ELSE MAX(end_datetime)
END AS start_time,
500.00 AS price,
auditoriums.id AS auditorium_id,
films.id AS film_id
FROM
session_times
CROSS JOIN
films_films AS films
CROSS JOIN
timetable_auditoriums AS auditoriums
LEFT JOIN
timetable_film_sessions AS prev_sessions
ON
auditoriums.id = prev_sessions.auditorium_id
AND
prev_sessions.start_datetime <= start_datetime
AND
prev_sessions.start_datetime + (films.duration || ' MINUTES') >= start_datetime
GROUP BY
start_time, auditoriums.id, films.id
ORDER BY
start_time, film_id;
-- Заполнение таблицы Режиссеров (Directors)
INSERT INTO films_directors (first_name, last_name) VALUES
('Кристофер', 'Нолан'),
('Стивен', 'Спилберг'),
('Квентин', 'Тарантино'),
('Мартин', 'Скорсезе'),
('Дэвид', 'Финчер'),
('Питер', 'Джексон'),
('Ридли', 'Скотт'),
('Джеймс', 'Кэмерон'),
('Стэнли', 'Кубрик'),
('Фрэнсис', 'Форд Коппола'),
('Альфред', 'Хичкок'),
('Джордж', 'Лукас');
-- Заполнение таблицы Актеров (Actors)
INSERT INTO films_actors (first_name, last_name) VALUES
('Том', 'Хэнкс'),
('Леонардо', 'ДиКаприо'),
('Мэттью', 'МакКонахи'),
('Дензел', 'Вашингтон'),
('Брэд', 'Питт'),
('Мэрил', 'Стрип'),
('Натали', 'Портман'),
('Джонни', 'Депп'),
('Кейт', 'Бланшетт'),
('Энди', 'Серкис'),
('Сигурни', 'Уивер'),
('Кейт', 'Уинслет');
-- Заполнение таблицы Стран (Countries)
INSERT INTO films_countries (name) VALUES
('США'),
('Великобритания'),
('Франция'),
('Германия'),
('Италия'),
('Канада'),
('Япония'),
('Индия'),
('Австралия'),
('Россия'),
('Китай'),
('Испания');