backend/main.py is ~600 lines and mixes request models, DuckDB orchestration, Iceberg conversion, and route handlers.
Proposed split:
models.py — Pydantic request/response models
duckdb_manager.py — DuckDBManager class
iceberg.py — _convert_to_iceberg_query + _validate_iceberg_table helpers
routes.py — FastAPI route handlers
main.py — app factory + lifespan only
No behaviour change. Makes tests (#6) and future changes easier to review.
backend/main.pyis ~600 lines and mixes request models, DuckDB orchestration, Iceberg conversion, and route handlers.Proposed split:
models.py— Pydantic request/response modelsduckdb_manager.py—DuckDBManagerclassiceberg.py—_convert_to_iceberg_query+_validate_iceberg_tablehelpersroutes.py— FastAPI route handlersmain.py— app factory +lifespanonlyNo behaviour change. Makes tests (#6) and future changes easier to review.