import aiosqlite
DB_NAME = "nether_club.db"
async def init_db():
"""Инициализация базы данных и создание таблиц согласно ТЗ"""
async with aiosqlite.connect(DB_NAME) as db:
# Таблица пользователей (с ролями: user, manager, admin)
await db.execute("""
CREATE TABLE IF NOT EXISTS users (
user_id INTEGER PRIMARY KEY,
username TEXT,
role TEXT DEFAULT 'user'
)
""")
# Таблица заказов/бронирований (связана внешним ключом с users)
await db.execute("""
CREATE TABLE IF NOT EXISTS orders (
order_id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER,
zone TEXT,
pc_name TEXT,
hours INTEGER,
total_price INTEGER,
status TEXT DEFAULT 'Активна',
FOREIGN KEY (user_id) REFERENCES users (user_id) ON DELETE CASCADE
)
""")
await db.commit()
async def add_user(user_id: int, username: str):
"""Добавление пользователя в БД, если его там еще нет"""
async with aiosqlite.connect(DB_NAME) as db:
await db.execute("""
INSERT OR IGNORE INTO users (user_id, username, role)
VALUES (?, ?, 'user')
""", (user_id, username))
await db.commit()
async def get_user_role(user_id: int) -> str:
"""Получение роли пользователя"""
async with aiosqlite.connect(DB_NAME) as db:
async with db.execute("SELECT role FROM users WHERE user_id = ?", (user_id,)) as cursor:
row = await cursor.fetchone()
return row[0] if row else 'user'