version: 2

models:
  - name: int_playlist_add_clip
    description: "Unified playlist add clip events from RDS historical data and backend events"
    config:
      group: playlists
      tags: ["cadence=daily", "dbt"]
    columns:
      - name: user_id
        description: "ID of the user who added the clip to the playlist"
      - name: clip_id
        description: "ID of the clip that was added to the playlist"
      - name: playlist_id
        description: "ID of the playlist the clip was added to"
      - name: clip_creator_user_id
        description: "ID of the user who created the clip"
      - name: is_user_song_owner
        description: "Boolean indicating if the user adding the clip is the clip creator"
      - name: playlist_size
        description: "Size of the playlist when the clip was added (backend events only)"
      - name: timestamp
        description: "Timestamp when the clip was added to the playlist"
      - name: data_source
        description: "Source of the data: 'rds' for historical data or 'backend' for new events"
      - name: p_date
        description: "Partition date of the event"
      - name: p_hour
        description: "Partition hour of the event"

  - name: int_user_clip_share_metrics
    description: "User-level aggregation of clip share metrics including how many clips each user has shared. Uses delete+insert incremental strategy to recalculate all metrics for users with new share activity."
    config:
      group: clips
      tags: ["cadence=daily", "dbt"]
    columns:
      - name: user_id
        description: "ID of the user"
      - name: n_unique_clips_shared
        description: "Number of unique clips this user has shared"
      - name: n_unique_own_clips_shared
        description: "Number of unique clips created by this user that they have shared"
      - name: n_unique_others_clips_shared
        description: "Number of unique clips created by other users that this user has shared"
      - name: n_shares
        description: "Total number of share actions made by this user"
      - name: n_shared_platforms
        description: "Number of unique platforms this user has used to share clips"
      - name: first_share_timestamp
        description: "Timestamp of the first share made by this user"
      - name: last_share_timestamp
        description: "Timestamp of the most recent share made by this user"

  - name: int_user_clip_like_historical
    description: "Historical user clip like events"
    config:
      group: clips
      tags: ["cadence=daily", "dbt"]
    columns:
      - name: user_id
        description: "ID of the user who liked/disliked the clip"
      - name: clip_id
        description: "ID of the clip that was liked/disliked"
      - name: target_user_id
        description: "ID of the user who created the clip"
      - name: net_action_value
        description: "Net like action: 1 for like, -1 for dislike, 0 for neutral"
      - name: is_user_song_owner
        description: "Boolean indicating if the user is the clip creator"
      - name: timestamp
        description: "Timestamp of the like/dislike action"
      - name: p_date
        description: "Partition date of the event"
      - name: p_hour
        description: "Partition hour of the event"

  - name: int_tag_upsample_used
    description: "Tag upsample usage events from backend events"
    config:
      group: create
      tags: ["cadence=daily", "dbt"]
    columns:
      - name: user_id
        description: "ID of the user who used the tag upsample"
      - name: clip_id
        description: "ID of the clip that had tag upsample used"
      - name: was_prompt_used_exactly
        description: "Boolean indicating if the prompt was used exactly"
      - name: timestamp
        description: "Timestamp when the tag upsample was used"
      - name: p_date
        description: "Partition date of the event"
      - name: p_hour
        description: "Partition hour of the event"

  - name: int_user_clip_likes_received
    description: Aggregated historical user clip like statistics
    config:
      group: clips
      tags: ["cadence=daily", "dbt"]
    columns:
      - name: user_id
        description: User ID
      - name: n_clip_likes_received
        description: Number of clip likes received
      - name: n_clip_likes_received_verified
        description: Number of verified likes received (likes that were received after the user listened to the clip for at least 5 seconds)
      - name: n_public_clips_receiving_likes
        description: Number of public clips receiving likes
      - name: n_clip_receiving_likes
        description: Number of clips receiving likes
      - name: n_public_clip_likes_received
        description: Number of public clip likes received
      - name: n_public_clip_likes_received_verified
        description: Number of public verified clip likes received
      - name: n_public_clip_receiving_likes
        description: Number of public clips receiving likes
      - name: max_clip_verified_likes
        description: Max verified likes per clip
      - name: avg_clip_verified_likes
        description: Average verified likes per clip
      - name: p50_clip_verified_likes
        description: Median verified likes per clip
      - name: max_public_clip_verified_likes
        description: Max public verified likes per clip
      - name: avg_public_clip_verified_likes
        description: Average public verified likes per clip
      - name: p50_public_clip_verified_likes
        description: Median public verified likes per clip
