Init project
This commit is contained in:
75
birthday_pool_bot/repositories/migrations/cli.py
Normal file
75
birthday_pool_bot/repositories/migrations/cli.py
Normal file
@@ -0,0 +1,75 @@
|
||||
from typing import Optional
|
||||
|
||||
import typer
|
||||
from rich.console import Console
|
||||
from rich.table import Table
|
||||
|
||||
from birthday_pool_bot.settings import Settings
|
||||
|
||||
from .migrator import Migrator
|
||||
|
||||
|
||||
def callback(ctx: typer.Context):
|
||||
ctx.obj = ctx.obj or {}
|
||||
|
||||
settings = ctx.obj["settings"]
|
||||
ctx.obj["migrator"] = Migrator(settings=settings.repository)
|
||||
|
||||
|
||||
def show_migrations_list(ctx: typer.Context):
|
||||
migrator: Migrator = ctx.obj["migrator"]
|
||||
|
||||
table = Table("ID")
|
||||
for migration_id in migrator.get_migrations():
|
||||
table.add_row(migration_id)
|
||||
Console().print(table)
|
||||
|
||||
|
||||
def apply_migrations(ctx: typer.Context):
|
||||
migrator: Migrator = ctx.obj["migrator"]
|
||||
|
||||
migrator.migrate()
|
||||
|
||||
|
||||
def rollback_migrations(
|
||||
ctx: typer.Context,
|
||||
revision: Optional[str] = typer.Argument(
|
||||
None,
|
||||
help="Revision id or relative revision (`-1`, `-2`)",
|
||||
),
|
||||
):
|
||||
migrator: Migrator = ctx.obj["migrator"]
|
||||
|
||||
migrator.rollback(migration_id=revision)
|
||||
|
||||
|
||||
def squash_migrations(ctx: typer.Context):
|
||||
migrator: Migrator = ctx.obj["migrator"]
|
||||
|
||||
migrator.squash_migrations(new_message="init")
|
||||
|
||||
|
||||
def create_migration(
|
||||
ctx: typer.Context,
|
||||
message: Optional[str] = typer.Option(
|
||||
None,
|
||||
"-m", "--message",
|
||||
help="Migration short message",
|
||||
),
|
||||
):
|
||||
migrator: Migrator = ctx.obj["migrator"]
|
||||
|
||||
migrator.create_migration(message=message)
|
||||
|
||||
|
||||
def get_cli() -> typer.Typer:
|
||||
cli = typer.Typer(name="Migration")
|
||||
|
||||
cli.callback()(callback)
|
||||
cli.command(name="apply")(apply_migrations)
|
||||
cli.command(name="rollback")(rollback_migrations)
|
||||
cli.command(name="create")(create_migration)
|
||||
cli.command(name="squash")(squash_migrations)
|
||||
cli.command(name="list")(show_migrations_list)
|
||||
|
||||
return cli
|
||||
Reference in New Issue
Block a user