version: 2

sources:
  - name: crm_shopify
    description: >
      Raw Shopify data synced via Fivetran for CRM-managed stores (~174 stores).
      One schema per store under CRM_ECOMMERCE_DATA. Schemas are discovered and
      unioned dynamically at query time via the generate_shopify_table_union macro
      — not accessed via dbt source() refs.
    database: CRM_ECOMMERCE_DATA
    schema: _dynamic_see_generate_shopify_table_union_macro
    tables:
      - name: ORDER
      - name: ORDER_LINE
      - name: ORDER_DISCOUNT_CODE
      - name: ORDER_LINE_REFUND
      - name: ORDER_URL_TAG
      - name: CUSTOMER
      - name: CUSTOMER_ADDRESS
      - name: PRODUCT
      - name: PRODUCT_VARIANT
      - name: PRODUCT_TAG
      - name: COLLECTION
      - name: COLLECTION_PRODUCT
      - name: INVENTORY_ITEM
      - name: INVENTORY_LEVEL
      - name: INVENTORY_QUANTITY
      - name: FULFILLMENT
      - name: FULFILLMENT_ORDER
      - name: FULFILLMENT_ORDER_LINE
      - name: FULFILLMENT_ORDER_LINE_ITEM
      - name: FULFILLMENT_EVENT
      - name: REFUND
      - name: TRANSACTION
      - name: ABANDONED_CHECKOUT
      - name: SHOP

  - name: d2c_registry
    description: >
      D2C store ownership and metadata registry, maintained by the D2C operations
      Lambda pipeline. Replaces the legacy Google-Sheets-backed ARTIST_STORES source.
    database: SHOPIFY_STORES_GLOBAL
    schema: "{{ 'D2C_OPERATIONS' if target.name == 'prod' else 'QA_D2C_OPERATIONS' }}"
    tables:
      - name: ECOMMERCE_STORE_REGISTRY
      - name: D2C_STORE_ARTIST_MAPPING
        columns:
          - name: MYSHOPIFY_DOMAIN
            tests:
              - not_null
          - name: ARTIST_NAME
            tests:
              - not_null
          - name: ARTIST_ORDER
            description: "Per-store display order for MULTI_ARTIST_STORE_ARTISTS; referenced directly in int_d2c_stores' array_agg WITHIN GROUP."
            tests:
              - not_null
          - name: GLOBAL_PARTICIPANT_ID

  - name: d2c_shopify
    description: >
      Raw Shopify data synced via Fivetran for D2C-managed stores.
      One schema per store under SHOPIFY_STORES_GLOBAL. Schemas are discovered and
      unioned dynamically at query time via the generate_shopify_table_union macro
      — not accessed via dbt source() refs.
    database: SHOPIFY_STORES_GLOBAL
    schema: _dynamic_see_int_d2c_stores
    tables:
      - name: ORDER
      - name: ORDER_LINE
      - name: ORDER_DISCOUNT_CODE
      - name: ORDER_LINE_REFUND
      - name: ORDER_URL_TAG
      - name: CUSTOMER
      - name: CUSTOMER_ADDRESS
      - name: PRODUCT
      - name: PRODUCT_VARIANT
      - name: PRODUCT_TAG
      - name: COLLECTION
      - name: COLLECTION_PRODUCT
      - name: INVENTORY_ITEM
      - name: INVENTORY_LEVEL
      - name: INVENTORY_QUANTITY
      - name: FULFILLMENT
      - name: FULFILLMENT_ORDER
      - name: FULFILLMENT_ORDER_LINE
      - name: FULFILLMENT_ORDER_LINE_ITEM
      - name: FULFILLMENT_EVENT
      - name: REFUND
      - name: TRANSACTION
      - name: ABANDONED_CHECKOUT
      - name: SHOP

  - name: fansifter_shopify
    description: >
      Raw Shopify data synced via Fivetran for Fansifter-managed stores (~10 stores).
      One schema per store under PROD_SHOPIFY_INTEGRATIONS. Schemas are discovered and
      unioned dynamically at query time via the generate_shopify_table_union macro
      — not accessed via dbt source() refs.
    database: PROD_SHOPIFY_INTEGRATIONS
    schema: _dynamic_see_generate_shopify_table_union_macro
    tables:
      - name: ORDER
      - name: ORDER_LINE
      - name: ORDER_DISCOUNT_CODE
      - name: ORDER_LINE_REFUND
      - name: ORDER_URL_TAG
      - name: CUSTOMER
      - name: CUSTOMER_ADDRESS
      - name: PRODUCT
      - name: PRODUCT_VARIANT
      - name: PRODUCT_TAG
      - name: COLLECTION
      - name: COLLECTION_PRODUCT
      - name: INVENTORY_ITEM
      - name: INVENTORY_LEVEL
      - name: INVENTORY_QUANTITY
      - name: FULFILLMENT
      - name: FULFILLMENT_ORDER
      - name: FULFILLMENT_ORDER_LINE
      - name: FULFILLMENT_ORDER_LINE_ITEM
      - name: FULFILLMENT_EVENT
      - name: REFUND
      - name: TRANSACTION
      - name: ABANDONED_CHECKOUT
      - name: SHOP
