from datetime import datetime from sqlalchemy import select from config import ADMIN_ID from database import db from database.migrations.schema_upgrade import ( apply_all_migrations, ensure_tg_mirror_columns_and_backfill, ) from database.models import Admin, Base, User async def init_db(): async with db.engine.begin() as conn: await conn.run_sync(Base.metadata.create_all) await apply_all_migrations(conn) async with db.engine.begin() as conn: await ensure_tg_mirror_columns_and_backfill(conn) async with db.async_session_maker() as session: result = await session.execute(select(User).where(User.tg_id == 0)) if not result.scalar_one_or_none(): session.add( User( tg_id=0, username="system", first_name="System", is_bot=True, created_at=datetime.utcnow(), updated_at=datetime.utcnow(), ) ) for tg_id in ADMIN_ID: result = await session.execute(select(Admin).where(Admin.tg_id == tg_id)) if not result.scalar_one_or_none(): session.add( Admin( tg_id=tg_id, role="superadmin", description="Imported from config", added_at=datetime.utcnow() ) ) await session.commit()