mirror of
https://github.com/evroon/bracket.git
synced 2026-01-19 11:38:53 -05:00
57 lines
1.5 KiB
Python
57 lines
1.5 KiB
Python
import asyncio
|
|
import functools
|
|
from typing import Any
|
|
|
|
import click
|
|
|
|
from ladderz.database import database, engine
|
|
from ladderz.logger import get_logger
|
|
from ladderz.schema import metadata, players, tournaments, users
|
|
from ladderz.utils.dummy_records import DUMMY_PLAYER, DUMMY_TOURNAMENT, DUMMY_USER
|
|
|
|
logger = get_logger('cli')
|
|
|
|
|
|
def run_async(f: Any) -> Any:
|
|
@functools.wraps(f)
|
|
def wrapper(*args: Any, **kwargs: Any) -> Any:
|
|
loop = asyncio.new_event_loop()
|
|
|
|
async def inner() -> None:
|
|
try:
|
|
await database.connect()
|
|
await f(*args, **kwargs)
|
|
|
|
except KeyboardInterrupt:
|
|
logger.debug('Closing the process.')
|
|
except Exception as e:
|
|
logger.error(e, exc_info=True)
|
|
raise e
|
|
finally:
|
|
await database.disconnect()
|
|
|
|
return loop.run_until_complete(inner())
|
|
|
|
return wrapper
|
|
|
|
|
|
@click.group()
|
|
def cli() -> None:
|
|
pass
|
|
|
|
|
|
@click.command()
|
|
@run_async
|
|
async def create_dev_db() -> None:
|
|
logger.warning('Initializing database with dummy records')
|
|
await database.connect()
|
|
metadata.create_all(engine)
|
|
await database.execute(query=users.insert(), values=DUMMY_USER.dict())
|
|
await database.execute(query=tournaments.insert(), values=DUMMY_TOURNAMENT.dict())
|
|
await database.execute(query=players.insert(), values=DUMMY_PLAYER.dict())
|
|
|
|
|
|
if __name__ == "__main__":
|
|
cli.add_command(create_dev_db)
|
|
cli()
|