diff --git a/SQLite3/bd_func/bd_user_create.py b/SQLite3/bd_func/bd_user_create.py index aeadf61..4f51e9a 100644 --- a/SQLite3/bd_func/bd_user_create.py +++ b/SQLite3/bd_func/bd_user_create.py @@ -7,10 +7,13 @@ from ProjectsFiles import BotVar # Настройка экспорта в модули __all__ = ("create_user_db",) + # Функция создания базы данных async def create_user_db(bd_name: str = BotVar.bd_names): with sqlite3.connect(bd_name) as db: cursor = db.cursor() + + # Таблица пользователей cursor.execute(''' CREATE TABLE IF NOT EXISTS users ( user_id INTEGER PRIMARY KEY, @@ -18,10 +21,12 @@ async def create_user_db(bd_name: str = BotVar.bd_names): username TEXT, first_name TEXT, last_name TEXT, - role TEXT DEFAULT 'active', - status TEXT DEFAULT 'user' + role TEXT DEFAULT NULL, + status TEXT DEFAULT 'active', + user TEXT DEFAULT 'user' );''') + # Таблица сообщений пользователей cursor.execute(''' CREATE TABLE IF NOT EXISTS user_messages ( user_id INTEGER PRIMARY KEY, -- Уникальный ключ @@ -32,7 +37,147 @@ async def create_user_db(bd_name: str = BotVar.bd_names): messages_per_week INTEGER DEFAULT 0, messages_per_month INTEGER DEFAULT 0, total_messages INTEGER DEFAULT 0, - FOREIGN KEY (user_id) REFERENCES users (user_id) + FOREIGN KEY (user_id) REFERENCES users (user_id) ON DELETE CASCADE );''') + # Таблица персонажей + cursor.execute(''' + CREATE TABLE IF NOT EXISTS characters ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + region TEXT NOT NULL, + name TEXT NOT NULL, + status TEXT DEFAULT 'Свободно', + user_id INTEGER DEFAULT NULL, + comment TEXT DEFAULT '', + FOREIGN KEY (user_id) REFERENCES users (user_id) ON DELETE SET NULL + );''') + + characters = [ + # Мондштадт + ("Мондштадт", "Венти", "Свободно", ""), + ("Мондштадт", "Кэйа", "Свободно", ""), + ("Мондштадт", "Альбедо", "Свободно", ""), + ("Мондштадт", "Дилюк", "Свободно", ""), + ("Мондштадт", "Мика", "Свободно", ""), + ("Мондштадт", "Беннет", "Свободно", ""), + ("Мондштадт", "Рэйзор", "Свободно", ""), + ("Мондштадт", "Эола", "Свободно", ""), + ("Мондштадт", "Мона", "Свободно", ""), + ("Мондштадт", "Джинн", "Свободно", ""), + ("Мондштадт", "Диона", "Свободно", ""), + ("Мондштадт", "Лиза", "Свободно", ""), + ("Мондштадт", "Ноэлль", "Свободно", ""), + ("Мондштадт", "Сахароза", "Свободно", ""), + ("Мондштадт", "Розария", "Свободно", ""), + ("Мондштадт", "Эмбер", "Свободно", ""), + ("Мондштадт", "Фишль", "Свободно", ""), + ("Мондштадт", "Барбара", "Свободно", ""), + + # Ли Юэ + ("Ли Юэ", "Чжун Ли", "Свободно", ""), + ("Ли Юэ", "Сяо", "Свободно", ""), + ("Ли Юэ", "Син Цю", "Свободно", ""), + ("Ли Юэ", "Чун Юнь", "Свободно", ""), + ("Ли Юэ", "Бай Чжу", "Свободно", ""), + ("Ли Юэ", "Е Лань", "Свободно", ""), + ("Ли Юэ", "Шень Хэ", "Свободно", ""), + ("Ли Юэ", "Гань Юй", "Свободно", ""), + ("Ли Юэ", "Ци Ци", "Свободно", ""), + ("Ли Юэ", "Кэ Цин", "Свободно", ""), + ("Ли Юэ", "Янь Фэй", "Свободно", ""), + ("Ли Юэ", "Нин Гуан", "Свободно", ""), + ("Ли Юэ", "Бэй Доу", "Свободно", ""), + ("Ли Юэ", "Яо Яо", "Свободно", ""), + ("Ли Юэ", "Ка Мин", "Свободно", ""), + ("Ли Юэ", "Сянь Юнь", "Свободно", ""), + ("Ли Юэ", "Юнь Цзинь", "Свободно", ""), + ("Ли Юэ", "Ху Тао", "Свободно", ""), + ("Ли Юэ", "Лань Янь", "Свободно", ""), + + # Инадзума + ("Инадзума", "Итто", "Свободно", ""), + ("Инадзума", "Горо", "Свободно", ""), + ("Инадзума", "Аято", "Свободно", ""), + ("Инадзума", "Хэйдзо", "Свободно", ""), + ("Инадзума", "Тома", "Свободно", ""), + ("Инадзума", "Кадзуха", "Свободно", ""), + ("Инадзума", "Кирара", "Свободно", ""), + ("Инадзума", "Кудзё Сара", "Свободно", ""), + ("Инадзума", "Ёимия", "Свободно", ""), + ("Инадзума", "Аяка", "Свободно", ""), + ("Инадзума", "Сангономия Кокоми", "Свободно", ""), + ("Инадзума", "Яэ Мико", "Свободно", ""), + ("Инадзума", "Райдэн Эи", "Свободно", ""), + ("Инадзума", "Саю", "Свободно", ""), + ("Инадзума", "Куки Синобу", "Свободно", ""), + ("Инадзума", "Мидзуки", "Свободно", ""), + + # Сумеру + ("Сумеру", "Аль-Хайтам", "Свободно", ""), + ("Сумеру", "Кавех", "Свободно", ""), + ("Сумеру", "Сайно", "Свободно", ""), + ("Сумеру", "Тигнари", "Свободно", ""), + ("Сумеру", "Сетос", "Свободно", ""), + ("Сумеру", "Нилу", "Свободно", ""), + ("Сумеру", "Нахида", "Свободно", ""), + ("Сумеру", "Лайла", "Свободно", ""), + ("Сумеру", "Кандакия", "Свободно", ""), + ("Сумеру", "Дори", "Свободно", ""), + ("Сумеру", "Дэхья", "Свободно", ""), + ("Сумеру", "Коллеи", "Свободно", ""), + ("Сумеру", "Фарузан", "Свободно", ""), + + # Фонтейн + ("Фонтейн", "Лини", "Свободно", ""), + ("Фонтейн", "Ризли", "Свободно", ""), + ("Фонтейн", "Невиллет", "Свободно", ""), + ("Фонтейн", "Фремине", "Свободно", ""), + ("Фонтейн", "Линетт", "Свободно", ""), + ("Фонтейн", "Эмилия", "Свободно", ""), + ("Фонтейн", "Клоринда", "Свободно", ""), + ("Фонтейн", "Навия", "Свободно", ""), + ("Фонтейн", "Шарлотта", "Свободно", ""), + ("Фонтейн", "Фурина", "Свободно", ""), + ("Фонтейн", "Тиори", "Свободно", ""), + ("Фонтейн", "Сиджвин", "Свободно", ""), + + # Натлан + ("Натлан", "Кинич", "Свободно", ""), + ("Натлан", "Оророн", "Свободно", ""), + ("Натлан", "Муалани", "Свободно", ""), + ("Натлан", "Ситлали", "Свободно", ""), + ("Натлан", "Шилонен", "Свободно", ""), + ("Натлан", "Иансан", "Свободно", ""), + ("Натлан", "Мавуика", "Свободно", ""), + ("Натлан", "Часка", "Свободно", ""), + + # Фатуи + ("Фатуи", "Тарталья", "Свободно", ""), + ("Фатуи", "Панталоне", "Свободно", ""), + ("Фатуи", "Дотторе", "Свободно", ""), + ("Фатуи", "Капитано", "Свободно", ""), + ("Фатуи", "Пьеро", "Свободно", ""), + ("Фатуи", "Пульничелла", "Свободно", ""), + ("Фатуи", "Синьора", "Свободно", ""), + ("Фатуи", "Арлекино", "Свободно", ""), + ("Фатуи", "Коломбина", "Свободно", ""), + ("Фатуи", "Царица", "Свободно", ""), + ("Фатуи", "Странник", "Свободно", ""), + + # Иные персонажи + ("Иные персонажи", "Итэр", "Свободно", ""), + ("Иные персонажи", "Люмин", "Свободно", ""), + ("Иные персонажи", "Элой", "Свободно", ""), + ("Иные персонажи", "Паймон", "Свободно", ""), + ("Иные персонажи", "Дайнслейф", "Свободно", ""), + ] + + # Проверяем, пуста ли таблица characters + cursor.execute("SELECT COUNT(*) FROM characters;") + if cursor.fetchone()[0] == 0: + cursor.executemany(''' + INSERT INTO characters (region, name, status, comment) + VALUES (?, ?, ?, ?); + ''', characters) + db.commit()