from fastapi import APIRouter router = APIRouter(prefix="/trino", tags=["Trino & Iceberg Discovery"]) @router.get("/catalogs") def get_trino_catalogs(): """List available Trino catalogs.""" return { "catalogs": [ {"id": "iceberg", "name": "Apache Iceberg Catalog", "type": "iceberg"}, {"id": "nessie", "name": "Project Nessie Catalog (Git-for-Data)", "type": "nessie"}, {"id": "polaris", "name": "Apache Polaris Catalog (REST Spec)", "type": "polaris"}, {"id": "lakehouse", "name": "Trino Default Lakehouse", "type": "trino"} ] } @router.get("/schemas") def get_trino_schemas(): """List lakehouse medallion layers/schemas.""" return { "schemas": [ {"id": "bronze", "name": "Bronze Ingestion Raw Staging", "layer": "bronze"}, {"id": "silver", "name": "Silver Cleansed & Normalized Models", "layer": "silver"}, {"id": "gold", "name": "Gold Business Data Marts", "layer": "gold"} ] } @router.get("/tables") def get_trino_tables(catalog: str = "iceberg", schema: str = "bronze"): """List tables registered under specific catalog and schema.""" return { "catalog": catalog, "schema": schema, "tables": [ {"table_name": "environmental_permits_cdc", "layer": "bronze", "format": "PARQUET"}, {"table_name": "spku_api_raw", "layer": "bronze", "format": "JSON"}, {"table_name": "gws_waste_reports", "layer": "bronze", "format": "CSV"}, {"table_name": "stg_spku_realtime", "layer": "silver", "format": "ICEBERG"}, {"table_name": "stg_environmental_permits_clean", "layer": "silver", "format": "ICEBERG"}, {"table_name": "fct_spku_daily_mart", "layer": "gold", "format": "ICEBERG"}, {"table_name": "fct_waste_management_summary", "layer": "gold", "format": "ICEBERG"} ] }