44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
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()
|