Spaces:
Sleeping
Sleeping
| import os | |
| import sys | |
| from pathlib import Path | |
| from fastapi import FastAPI | |
| from fastapi.middleware.cors import CORSMiddleware | |
| from sqlalchemy import inspect, text | |
| sys.path.append(str(Path(__file__).parent)) | |
| try: | |
| from core.database import engine, Base | |
| from api.invoices import router as invoice_router | |
| except ImportError: | |
| from backend.core.database import engine, Base | |
| from backend.api.invoices import router as invoice_router | |
| Base.metadata.create_all(bind=engine) | |
| def _ensure_schema(): | |
| inspector = inspect(engine) | |
| migrations = { | |
| "invoice_items": { | |
| "patient_name": "VARCHAR", | |
| "shade": "VARCHAR", | |
| }, | |
| } | |
| with engine.begin() as conn: | |
| for table_name, columns in migrations.items(): | |
| if not inspector.has_table(table_name): | |
| continue | |
| existing_columns = {col["name"] for col in inspector.get_columns(table_name)} | |
| for column_name, column_type in columns.items(): | |
| if column_name in existing_columns: | |
| continue | |
| conn.execute(text(f"ALTER TABLE {table_name} ADD COLUMN {column_name} {column_type}")) | |
| _ensure_schema() | |
| app = FastAPI(title="SmiloCAD API", redirect_slashes=False) | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=["https://smilocard.vercel.app"], | |
| allow_methods=["*"], | |
| allow_headers=["*"], | |
| ) | |
| def root(): | |
| return {"status": "SmiloCAD API running"} | |
| app.include_router(invoice_router, prefix="/api") |