version: 2

models:
  - name: braze_user_attributes
    description: |
      Comprehensive user attributes and behavioral data aggregated over the last 90 days for Braze marketing automation.
      Includes user demographics, subscription status, creation activity, engagement metrics, and music preferences.
    config:
      group: braze
      tags:
        - "automation_condition=daily_cron_with_eager_historical_backfill_condition"
    columns:
      - name: user_id
        description: Unique user identifier
      - name: user_uid
        description: User UUID
      - name: signup_date
        description: Date when user joined the platform
      - name: user_display_name
        description: User's display name
      - name: user_handle
        description: User's handle/username
      - name: last_active_date
        description: Date when user was last active on the platform
      - name: self_identified_persona
        description: User's self-identified persona from welcome modal survey
      - name: power_user
        description: Power user classification (TBD)
      - name: current_subscription_status
        description: Whether user currently has an active subscription
      - name: current_subscription_tier
        description: Current subscription tier level
      - name: revenue_data
        description: Revenue data (TBD)
      - name: song_shared
        description: Number of songs shared by user (TODO- Fix this)
      - name: music_genre_most_listened_to
        description: Most frequently listened to music genre based on play data
      - name: music_genre_most_generated
        description: Most frequently generated music genre based on created clips
      - name: number_of_songs_created
        description: Total number of songs created by user in last 90 days
      - name: number_of_songs_published
        description: Total number of songs published by user in last 90 days
      - name: number_of_subscription_purchases_made
        description: Total number of subscription purchases made by user
      - name: times_active
        description: Number of days user was active in last 90 days
      - name: times_active_creating
        description: Number of days user was active creating content in last 90 days
      - name: remaining_credits
        description: User's remaining credit balance
      - name: times_used_orpheus
        description: Number of times user used Orpheus feature
      - name: hooks_listened_to
        description: Number of hooks listened to by user
      - name: hooks_created
        description: Number of hooks created by user
      - name: hooks_published
        description: Number of hooks published by user
      - name: last_clip_played
        description: Object containing details about the last clip the user played (name, artist, url, art_url)
      - name: last_clip_published
        description: Object containing details about the last clip the user published (name, url, art_url)

  - name: braze_users_attributes_prepared_for_sync
    description: |
      User attributes formatted for Braze API sync with external_id as the key identifier and all other attributes
      bundled into a JSON payload. This table is optimized for efficient data transfer to Braze marketing platform.
    config:
      group: braze
      tags:
        - "automation_condition=daily_cron_with_eager_historical_backfill_condition"
    columns:
      - name: external_id
        description: User ID used as external identifier for Braze API
      - name: payload
        description: JSON object containing all user attributes for Braze sync
      - name: updated_at
        description: Date when the record was last updated (set to current date)
