# SQLite3/bd_func/bd_user_create.py
# Создание базы данных

import sqlite3
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,
            tg_id INTEGER NOT NULL UNIQUE,
            username TEXT,
            first_name TEXT,
            last_name TEXT,
            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,  -- Уникальный ключ
            last_message TEXT,
            last_message_id INTEGER,
            last_message_time TEXT,
            messages_per_day INTEGER DEFAULT 0,
            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) 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
        );''')

        # Таблица персонажей Хонкай
        cursor.execute('''
                CREATE TABLE IF NOT EXISTS characters_hsr (
                    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_genshin = [
            # Мондштадт
            ("Мондштадт", "Венти", "Свободно", ""),
            ("Мондштадт", "Кэйа", "Свободно", ""),
            ("Мондштадт", "Альбедо", "Свободно", ""),
            ("Мондштадт", "Дилюк", "Свободно", ""),
            ("Мондштадт", "Мика", "Свободно", ""),
            ("Мондштадт", "Беннет", "Свободно", ""),
            ("Мондштадт", "Рэйзор", "Свободно", ""),
            ("Мондштадт", "Эола", "Свободно", ""),
            ("Мондштадт", "Мона", "Свободно", ""),
            ("Мондштадт", "Джинн", "Свободно", ""),
            ("Мондштадт", "Диона", "Свободно", ""),
            ("Мондштадт", "Лиза", "Свободно", ""),
            ("Мондштадт", "Ноэлль", "Свободно", ""),
            ("Мондштадт", "Сахароза", "Свободно", ""),
            ("Мондштадт", "Розария", "Свободно", ""),
            ("Мондштадт", "Эмбер", "Свободно", ""),
            ("Мондштадт", "Фишль", "Свободно", ""),
            ("Мондштадт", "Барбара", "Свободно", ""),

            # Ли Юэ
            ("Ли Юэ", "Чжун Ли", "Свободно", ""),
            ("Ли Юэ", "Сяо", "Свободно", ""),
            ("Ли Юэ", "Син Цю", "Свободно", ""),
            ("Ли Юэ", "Чун Юнь", "Свободно", ""),
            ("Ли Юэ", "Бай Чжу", "Свободно", ""),
            ("Ли Юэ", "Е Лань", "Свободно", ""),
            ("Ли Юэ", "Шень Хэ", "Свободно", ""),
            ("Ли Юэ", "Гань Юй", "Свободно", ""),
            ("Ли Юэ", "Ци Ци", "Свободно", ""),
            ("Ли Юэ", "Кэ Цин", "Свободно", ""),
            ("Ли Юэ", "Янь Фэй", "Свободно", ""),
            ("Ли Юэ", "Нин Гуан", "Свободно", ""),
            ("Ли Юэ", "Бэй Доу", "Свободно", ""),
            ("Ли Юэ", "Яо Яо", "Свободно", ""),
            ("Ли Юэ", "Ка Мин", "Свободно", ""),
            ("Ли Юэ", "Сянь Юнь", "Свободно", ""),
            ("Ли Юэ", "Юнь Цзинь", "Свободно", ""),
            ("Ли Юэ", "Ху Тао", "Свободно", ""),
            ("Ли Юэ", "Лань Янь", "Свободно", ""),

            # Инадзума
            ("Инадзума", "Итто", "Свободно", ""),
            ("Инадзума", "Горо", "Свободно", ""),
            ("Инадзума", "Аято", "Свободно", ""),
            ("Инадзума", "Хэйдзо", "Свободно", ""),
            ("Инадзума", "Тома", "Свободно", ""),
            ("Инадзума", "Кадзуха", "Свободно", ""),
            ("Инадзума", "Кирара", "Свободно", ""),
            ("Инадзума", "Кудзё Сара", "Свободно", ""),
            ("Инадзума", "Ёимия", "Свободно", ""),
            ("Инадзума", "Аяка", "Свободно", ""),
            ("Инадзума", "Сангономия Кокоми", "Свободно", ""),
            ("Инадзума", "Яэ Мико", "Свободно", ""),
            ("Инадзума", "Райдэн Эи", "Свободно", ""),
            ("Инадзума", "Саю", "Свободно", ""),
            ("Инадзума", "Куки Синобу", "Свободно", ""),
            ("Инадзума", "Мидзуки", "Свободно", ""),

            # Сумеру
            ("Сумеру", "Аль-Хайтам", "Свободно", ""),
            ("Сумеру", "Кавех", "Свободно", ""),
            ("Сумеру", "Сайно", "Свободно", ""),
            ("Сумеру", "Тигнари", "Свободно", ""),
            ("Сумеру", "Сетос", "Свободно", ""),
            ("Сумеру", "Нилу", "Свободно", ""),
            ("Сумеру", "Нахида", "Свободно", ""),
            ("Сумеру", "Лайла", "Свободно", ""),
            ("Сумеру", "Кандакия", "Свободно", ""),
            ("Сумеру", "Дори", "Свободно", ""),
            ("Сумеру", "Дэхья", "Свободно", ""),
            ("Сумеру", "Коллеи", "Свободно", ""),
            ("Сумеру", "Фарузан", "Свободно", ""),

            # Фонтейн
            ("Фонтейн", "Лини", "Свободно", ""),
            ("Фонтейн", "Ризли", "Свободно", ""),
            ("Фонтейн", "Невиллет", "Свободно", ""),
            ("Фонтейн", "Фремине", "Свободно", ""),
            ("Фонтейн", "Линетт", "Свободно", ""),
            ("Фонтейн", "Эмилия", "Свободно", ""),
            ("Фонтейн", "Клоринда", "Свободно", ""),
            ("Фонтейн", "Навия", "Свободно", ""),
            ("Фонтейн", "Шарлотта", "Свободно", ""),
            ("Фонтейн", "Фурина", "Свободно", ""),
            ("Фонтейн", "Тиори", "Свободно", ""),
            ("Фонтейн", "Сиджвин", "Свободно", ""),

            # Натлан
            ("Натлан", "Кинич", "Свободно", ""),
            ("Натлан", "Оророн", "Свободно", ""),
            ("Натлан", "Муалани", "Свободно", ""),
            ("Натлан", "Ситлали", "Свободно", ""),
            ("Натлан", "Шилонен", "Свободно", ""),
            ("Натлан", "Иансан", "Свободно", ""),
            ("Натлан", "Мавуика", "Свободно", ""),
            ("Натлан", "Часка", "Свободно", ""),

            # Фатуи
            ("Фатуи", "Тарталья", "Свободно", ""),
            ("Фатуи", "Панталоне", "Свободно", ""),
            ("Фатуи", "Дотторе", "Свободно", ""),
            ("Фатуи", "Капитано", "Свободно", ""),
            ("Фатуи", "Пьеро", "Свободно", ""),
            ("Фатуи", "Пульничелла", "Свободно", ""),
            ("Фатуи", "Синьора", "Свободно", ""),
            ("Фатуи", "Арлекино", "Свободно", ""),
            ("Фатуи", "Коломбина", "Свободно", ""),
            ("Фатуи", "Царица", "Свободно", ""),
            ("Фатуи", "Странник", "Свободно", ""),

            # Иные персонажи
            ("Иные персонажи", "Итэр", "Свободно", ""),
            ("Иные персонажи", "Люмин", "Свободно", ""),
            ("Иные персонажи", "Элой", "Свободно", ""),
            ("Иные персонажи", "Паймон", "Свободно", ""),
            ("Иные персонажи", "Дайнслейф", "Свободно", ""),
        ]

        characters_hsr = [
    # Ярило-6
    ("Ярило-6", "Броня", "Свободно", ""),
    ("Ярило-6", "Гепард", "Свободно", ""),
    ("Ярило-6", "Зеле", "Свободно", ""),
    ("Ярило-6", "Клара", "Свободно", ""),
    ("Ярило-6", "Лука", "Свободно", ""),
    ("Ярило-6", "Наташа", "Свободно", ""),
    ("Ярило-6", "Пела", "Свободно", ""),
    ("Ярило-6", "Рысь", "Свободно", ""),
    ("Ярило-6", "Сампо", "Свободно", ""),
    ("Ярило-6", "Сервал", "Свободно", ""),
    ("Ярило-6", "Хук", "Свободно", ""),

    # Станция «Герта»
    ("Станция «Герта»", "Арлан", "Свободно", ""),
    ("Станция «Герта»", "Аста", "Свободно", ""),
    ("Станция «Герта»", "Великая Герта", "Свободно", ""),
    ("Станция «Герта»", "Кукла «Герта»", "Свободно", ""),
    ("Станция «Герта»", "Жуань Мэй", "Свободно", ""),

    # Пенакония
    ("Пенакония", "Авантюрин", "Свободно", ""),
    ("Пенакония", "Ахерон", "Свободно", ""),
    ("Пенакония", "Галлахер", "Свободно", ""),
    ("Пенакония", "Зарянка", "Свободно", ""),
    ("Пенакония", "Миша", "Свободно", ""),
    ("Пенакония", "Мистер Река", "Свободно", ""),
    ("Пенакония", "Раппа", "Свободно", ""),
    ("Пенакония", "Чёрный Лебедь", "Свободно", ""),
    ("Пенакония", "Яшма", "Свободно", ""),
    ("Пенакония", "Воскресенье", "Свободно", ""),

    # Звёздный Экспресс
    ("Звёздный Экспресс", "Вельт", "Свободно", ""),
    ("Звёздный Экспресс", "Келус", "Свободно", ""),
    ("Звёздный Экспресс", "Стелла", "Свободно", ""),
    ("Звёздный Экспресс", "Дань Хэн", "Свободно", ""),
    ("Звёздный Экспресс", "Март 7", "Свободно", ""),
    ("Звёздный Экспресс", "Химеко", "Свободно", ""),
    ("Звёздный Экспресс", "Пом Пом", "Свободно", ""),

    # Галактика
    ("Галактика", "Аргенти", "Свободно", ""),
    ("Галактика", "Блэйд", "Свободно", ""),
    ("Галактика", "Бутхилл", "Свободно", ""),
    ("Галактика", "Доктор Рацио", "Свободно", ""),
    ("Галактика", "Кафка", "Свободно", ""),
    ("Галактика", "Светлячок", "Свободно", ""),
    ("Галактика", "Искорка", "Свободно", ""),
    ("Галактика", "Серебряный Волк", "Свободно", ""),
    ("Галактика", "Топаз", "Свободно", ""),

    # Амфореус
    ("Амфореус", "Аглая", "Свободно", ""),
    ("Амфореус", "Мидей", "Свободно", ""),
    ("Амфореус", "Трибби", "Свободно", ""),

    # Альянс Сяньчжоу
    ("Альянс Сяньчжоу", "Байлу", "Свободно", ""),
    ("Альянс Сяньчжоу", "Гуйнайфей", "Свободно", ""),
    ("Альянс Сяньчжоу", "Линша", "Свободно", ""),
    ("Альянс Сяньчжоу", "Лоча", "Свободно", ""),
    ("Альянс Сяньчжоу", "Моцзэ", "Свободно", ""),
    ("Альянс Сяньчжоу", "Пожиратель Луны", "Свободно", ""),
    ("Альянс Сяньчжоу", "Сушан", "Свободно", ""),
    ("Альянс Сяньчжоу", "Сюзи", "Свободно", ""),
    ("Альянс Сяньчжоу", "Фуга", "Свободно", ""),
    ("Альянс Сяньчжоу", "Фэйсяо", "Свободно", ""),
    ("Альянс Сяньчжоу", "Ханья", "Свободно", ""),
    ("Альянс Сяньчжоу", "Хохо", "Свободно", ""),
    ("Альянс Сяньчжоу", "Цзин Юань", "Свободно", ""),
    ("Альянс Сяньчжоу", "Цзиннлю", "Свободно", ""),
    ("Альянс Сяньчжоу", "Цзяоцю", "Свободно", ""),
    ("Альянс Сяньчжоу", "Цинцюэ", "Свободно", ""),
    ("Альянс Сяньчжоу", "Юйкун", "Свободно", ""),
    ("Альянс Сяньчжоу", "Юньли", "Свободно", ""),
    ("Альянс Сяньчжоу", "Яньцин", "Свободно", ""),
                    ]

        # Проверяем, пуста ли таблица characters
        cursor.execute("SELECT COUNT(*) FROM characters;")
        if cursor.fetchone()[0] == 0:
            cursor.executemany('''
            INSERT INTO characters (region, name, status, comment) 
            VALUES (?, ?, ?, ?);
            ''', characters_genshin)

            # Проверяем, пуста ли таблица characters_hsr
            cursor.execute("SELECT COUNT(*) FROM characters_hsr;")
            if cursor.fetchone()[0] == 0:
                cursor.executemany('''
                    INSERT INTO characters_hsr (region, name, status, comment) 
                    VALUES (?, ?, ?, ?);
                    ''', characters_hsr)

        db.commit()
