# --- Gateway Connection --- gateways: dev: connection: # For more information on configuring the connection to your execution engine, visit: # https://sqlmesh.readthedocs.io/en/stable/reference/configuration/#connection # https://sqlmesh.readthedocs.io/en/stable/integrations/engines/duckdb/#connection-options type: duckdb database: materia_dev.db extensions: - name: zipfs - name: httpfs - name: iceberg prod: connection: type: duckdb database: ':memory:' extensions: - name: httpfs - name: iceberg init_script: | 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; default_gateway: dev # --- 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