Scaffold SQLAlchemy models, routers, and Alembic migrations

- app/models/: Printer, Filament, PrintJob, Todo, PricingConfig with full
  SQLAlchemy 2.x mapped columns and relationships
- app/routers/: list + get-by-id endpoints for all five resources
- app/db.py: SQLAlchemy engine + SessionLocal + get_db dependency
- alembic/: env.py reads MYSQL_* env vars; 0001_initial_schema mirrors db.sql
- alembic.ini: script_location configured, URL injected at runtime

Since db.sql already created the tables, stamp the DB before running future
migrations:  alembic stamp head

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Martin Hohenberg
2026-06-18 21:19:59 +02:00
parent 005325d658
commit d092c19b41
20 changed files with 534 additions and 12 deletions

View File

@@ -4,6 +4,7 @@ from contextlib import asynccontextmanager
from fastapi import FastAPI
from app.db import check_db
from app.routers import filaments, pricing, print_jobs, printers, todos
logger = logging.getLogger("pops")
@@ -20,6 +21,12 @@ async def lifespan(app: FastAPI):
app = FastAPI(title="POPS", lifespan=lifespan)
app.include_router(printers.router)
app.include_router(filaments.router)
app.include_router(print_jobs.router)
app.include_router(todos.router)
app.include_router(pricing.router)
@app.get("/")
def root():