version: 2

models:
  - name: int_studio__events_with_sessions
    description: |
      Studio events with session identification logic.
      Consolidates all Studio-related events from multiple sources (web_user_event, bk_nonrealtime_event, web_audio_creation, web_audio_player_actions)
      and identifies sessions based on 30-minute gaps between Studio "use" events.
      Sessions are defined by 30-minute gaps between Studio "use" events.
    config:
      group: create
      tags: ["dbt"]
    meta:
      dagster:
        partitions_def:
          type: daily
          start_date: "{{ var('studio_project_start_date') }}"
          end_offset: 0
        automation_condition: daily_cron_with_eager_historical_backfill_condition
        backfill_policy:
          max_partitions_per_run: -1
    columns:
      - name: user_session_id
        description: Unique identifier for the user session (MD5 hash of user_id and session_number)
      - name: user_id
        description: User ID
      - name: user_uid
        description: User UID (UUID format)
      - name: backend_session_id
        description: Backend session identifier
      - name: session_number
        description: Sequential session number for the user
      - name: event_name
        description: Name of the event
      - name: event_source
        description: Source of the event (web_user_event, bk_nonrealtime_event, web_audio_creation, web_audio_player_actions)
      - name: event_timestamp
        description: Timestamp when the event occurred
      - name: client_timestamp
        description: Client-side timestamp (for frontend events)
      - name: context
        description: Event context (JSON variant, for frontend events)
      - name: page_url
        description: URL of the page where event occurred (for frontend events)
      - name: properties
        description: Event properties (JSON variant)
      - name: is_new_session
        description: Boolean indicating if this event started a new session
      - name: time_between_events_in_seconds
        description: Time in seconds since the previous event
      - name: created_at
        description: Timestamp when the event was created (same as event_timestamp)
      - name: last_event_timestamp
        description: Last event timestamp for the session
      - name: click_source_url
        description: URL source of the click (for web_audio_creation events)
      - name: new_clip_ids
        description: New clip IDs created (for web_audio_creation CreateSong events)
      - name: upload_type
        description: Type of upload (for web_audio_creation UploadSong events)
      - name: context_type
        description: Context type (for web_audio_player_actions events -  studio_new_timeline, studio_new_preview)
      - name: play_duration
        description: Play duration in seconds (for web_audio_player_actions events)
      - name: p_date
        description: Partition date
      - name: p_hour
        description: Partition hour

