Version : 2025.11.22

This commit is contained in:
2025-11-23 16:34:11 +01:00
commit b399e803b3
31 changed files with 5810 additions and 0 deletions

49
backend/cli.py Normal file
View File

@@ -0,0 +1,49 @@
import typer
import uvicorn
from sqlmodel import SQLModel
from database import engine
from models import Association, Balance, Operation
from rich.console import Console
from rich.panel import Panel
app = typer.Typer()
console = Console()
@app.command()
def start(
host: str = "127.0.0.1",
port: int = 8000,
reload: bool = True
):
"""
Start the FastAPI server.
"""
console.print(Panel(f"Starting Abacus Backend on http://{host}:{port}", title="Abacus", style="bold green"))
uvicorn.run("main:app", host=host, port=port, reload=reload)
@app.command()
def setup_db():
"""
Create database tables.
"""
console.print("[bold yellow]Creating tables...[/bold yellow]")
SQLModel.metadata.create_all(engine)
console.print("[bold green]Tables created successfully.[/bold green]")
@app.command()
def reset_db():
"""
Drop and recreate database tables.
"""
confirm = typer.confirm("Are you sure you want to drop all tables?")
if not confirm:
console.print("[bold red]Aborted.[/bold red]")
raise typer.Abort()
console.print("[bold red]Dropping all tables...[/bold red]")
SQLModel.metadata.drop_all(engine)
console.print("[bold green]Tables dropped.[/bold green]")
setup_db()
if __name__ == "__main__":
app()