# --- Gateway Connection --- # Single gateway connecting to R2 Iceberg catalog # Local dev uses virtual environments (e.g., dev_) # Production uses the 'prod' environment gateways: prod: connection: type: duckdb database: ':memory:' extensions: - name: httpfs - name: iceberg default_gateway: prod # --- Hooks --- # Run initialization SQL before all plans/runs # https://sqlmesh.readthedocs.io/en/stable/reference/configuration/#execution-hooks before_all: - | CREATE SECRET IF NOT EXISTS r2_secret ( TYPE ICEBERG, TOKEN '@env_var("CLOUDFLARE_API_TOKEN")' ); - | ATTACH '@env_var("R2_WAREHOUSE_NAME", "materia")' AS catalog ( TYPE ICEBERG, ENDPOINT '@env_var("ICEBERG_REST_URI")' ); - CREATE SCHEMA IF NOT EXISTS catalog.materia; - USE catalog.materia; # --- Model Defaults --- # https://sqlmesh.readthedocs.io/en/stable/reference/model_configuration/#model-defaults model_defaults: dialect: duckdb start: 2025-07-07 # Start date for backfill history cron: '@daily' # Run models daily at 12am UTC (can override per model) # --- Linting Rules --- # Enforce standards for your team # https://sqlmesh.readthedocs.io/en/stable/guides/linter/ linter: enabled: true rules: - ambiguousorinvalidcolumn - invalidselectstarexpansion # FLOW: Minimal prompts, automatic changes, summary output # https://sqlmesh.readthedocs.io/en/stable/reference/configuration/#plan plan: no_diff: true # Hide detailed text differences for changed models no_prompts: true # No interactive prompts auto_apply: true # Apply changes automatically # --- Optional: Set a default target environment --- # This is intended for local development to prevent users from accidentally applying plans to the prod environment. # It is a development only config and should NOT be committed to your git repo. # https://sqlmesh.readthedocs.io/en/stable/guides/configuration/#default-target-environment # Uncomment the following line to use a default target environment derived from the logged in user's name. # default_target_environment: dev_{{ user() }} # Example usage: # sqlmesh plan # Automatically resolves to: sqlmesh plan dev_yourname # sqlmesh plan prod # Specify `prod` to apply changes to production