Change: [flags]: add database flag for the project

This commit is contained in:
Kirill Samoylenkov 2025-11-03 02:04:29 +05:00
parent 1c5edbaa60
commit a90c8652a0
3 changed files with 37 additions and 6 deletions

View file

@ -1,4 +1,5 @@
__all__ = [
"Base",
"Student",
"TelegramUser",
"UniversityMember",
@ -10,7 +11,7 @@ __all__ = [
]
from .models import Student, TelegramUser, UniversityMember
from .models import Base, Student, TelegramUser, UniversityMember
from .postgres import (
create_db,
drop_db,

View file

@ -22,11 +22,11 @@ session_maker = async_sessionmaker(
)
async def create_db(engine: AsyncEngine):
async def create_db(engine: AsyncEngine) -> None:
async with engine.begin() as conn:
await conn.run_sync(Base.metadata.create_all)
async def drop_db(engine: AsyncEngine):
async def drop_db(engine: AsyncEngine) -> None:
async with engine.begin() as conn:
await conn.run_sync(Base.metadata.drop_all)

View file

@ -1,8 +1,39 @@
import argparse
import asyncio
from bot import start_bot
from config import configure_logger, settings
from database import create_db, engine, redis_protocol, session_maker
from database import (
create_db,
drop_db,
engine,
redis_protocol,
session_maker,
)
async def process_args() -> None:
parser = argparse.ArgumentParser(
description="Wrapper for program flags."
)
parser.add_argument(
"--db",
choices=["create", "drop", "migrate"],
help="Type of database operation.",
)
args = parser.parse_args()
match args.db:
case "create":
await create_db(engine)
exit(0)
case "drop":
await drop_db(engine)
exit(0)
case "migrate":
...
exit(0)
async def main() -> None:
@ -16,8 +47,7 @@ async def main() -> None:
listen_logging=settings.listen_logging,
)
# FIXME: Add argument for create/drop db.
await create_db(engine)
await process_args()
await start_bot(
bot_token=settings.bot_token,