# Name your project! Project names should contain only lowercase characters
# and underscores. A good package name should reflect your organization's
# name or the intended use of these models
name: "osmosis_models"
version: "1.0.0"
config-version: 2

require-dbt-version: ">=1.4.0"

# This setting configures which "profile" dbt uses for this project.
profile: "osmosis"

# These configurations specify where dbt should look for different types of files.
# The `model-paths` config, for example, states that models in this project can be
# found in the "models/" directory. You probably won't need to change these!
model-paths: ["models"]
analysis-paths: ["analysis"]
test-paths: ["tests"]
seed-paths: ["data"]
macro-paths: ["macros"]
snapshot-paths: ["snapshots"]

target-path: "target" # directory which will store compiled SQL files
clean-targets: # directories to be removed by `dbt clean`
  - "target"
  - "dbt_modules"
  - "dbt_packages"

# Configuring models
# Full documentation: https://docs.getdbt.com/docs/configuring-models

# In this example config, we tell dbt to build all models in the example/ directory
# as tables. These settings can be overridden in the individual model files
# using the `{{ config(...) }}` macro.
models:
  +copy_grants: true
  +persist_docs:
    relation: true
    columns: true
  +on_schema_change: "append_new_columns"

vars:
  "dbt_date:time_zone": GMT
  "UPDATE_SNOWFLAKE_TAGS": TRUE
  OBSERV_FULL_TEST: FALSE
  STREAMLINE_INVOKE_STREAMS: False
  STREAMLINE_USE_DEV_FOR_EXTERNAL_TABLES: False
  STREAMLINE_RUN_HISTORY: False
  UPDATE_UDFS_AND_SPS: False
  UPDATE_SNOWFLAKE_TAGS: True
  START_GHA_TASKS: False
  API_INTEGRATION: '{{ var("config")[target.name]["API_INTEGRATION"] if var("config")[target.name] else var("config")["dev"]["API_INTEGRATION"] }}' 
  EXTERNAL_FUNCTION_URI: '{{ var("config")[target.name]["EXTERNAL_FUNCTION_URI"] if var("config")[target.name] else var("config")["dev"]["EXTERNAL_FUNCTION_URI"] }}'
  ROLES: |
      ["INTERNAL_DEV"]
  
tests:
  +store_failures: true # all tests

on-run-start:
  - '{{create_sps()}}'
  - '{{create_udfs()}}'
  - '{{sp_bulk_get_asset_metadata()}}'
  - '{{sp_create_bulk_get_balances()}}'
  - '{{sp_create_bulk_get_validator_metadata()}}'
  - '{{sp_create_bulk_get_pool_balances()}}'

on-run-end:
  - '{{ apply_meta_as_tags(results) }}'

dispatch:
  - macro_namespace: dbt
    search_order:
      - osmosis-models
      - dbt_snowflake_query_tags
      - dbt

query-comment:
  comment: '{{ dbt_snowflake_query_tags.get_query_comment(node) }}'
  append: true # Snowflake removes prefixed comments.