import logging import os from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from api import customers, invoices, line_items, payments from db import Base, engine from seed import seed_if_empty logging.basicConfig(level=logging.INFO, format="%(levelname)s %(name)s: %(message)s") log = logging.getLogger("fixture") app = FastAPI( title="Fixture Invoicing", description="SOLEPRINT FIXTURE APP — not a real invoicing product", version="0.1.0", ) app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_methods=["*"], allow_headers=["*"], ) @app.on_event("startup") def startup(): Base.metadata.create_all(bind=engine) if os.getenv("SEED_ON_START", "false").lower() == "true": seed_if_empty() @app.get("/") def root(): return { "app": "fixture-invoicing", "warning": "THIS IS A SOLEPRINT FIXTURE — NOT A REAL PRODUCT", "docs": "/docs", } @app.get("/health") def health(): return {"status": "ok"} app.include_router(customers.router, prefix="/api/customers", tags=["customers"]) app.include_router(invoices.router, prefix="/api/invoices", tags=["invoices"]) app.include_router(line_items.router, prefix="/api/line-items", tags=["line-items"]) app.include_router(payments.router, prefix="/api/payments", tags=["payments"])