# define all the existing web tables in snowflake
sources:
  - name: web
    database: "{{ target.database }}"
    schema: prod
    tables:
      - name: web_user_event
        description: |
          Web user events from web platform tracking user interactions on Suno web pages.
          This table contains comprehensive event data including page views, user actions,
          navigation patterns, and contextual metadata from web browsers. Events are tracked
          in real-time and include both user-initiated actions and system-generated events.
        tags: ["web", "raw_event", "frontend", "partition_type=hourly"]
        columns:
          - name: user_uid
            description: "Unique user identifier"
          - name: session_id
            description: "Web session identifier"
          - name: event_name
            description: "Name of the tracked event"
          - name: action_name
            description: "Specific action taken by user"
          - name: page_url
            description: "URL of the page where event occurred"
          - name: client_timestamp
            description: "When event occurred on client side (TIMESTAMP_TZ)"
          - name: server_timestamp
            description: "When event was received by server (TIMESTAMP_TZ)"
          - name: client_ip
            description: "User's IP address"
          - name: country
            description: "User's country"
          - name: city
            description: "User's city"
          - name: user_agent
            description: "Browser user agent string"
          - name: platform
            description: "Platform (web, mobile web, etc.)"
          - name: is_mobile
            description: "Whether user is on mobile device"
          - name: p_date
            description: "Partition date for table optimization"
          - name: p_hour
            description: "Partition hour for table optimization"
      - name: web_audio_player_actions
        description: |
          Web audio player action events from web platform tracking audio playback interactions.
          This table contains detailed event data for audio player controls, playback states,
          and user interactions with audio content. Events are tracked in real-time and include
          both user-initiated actions and system-generated playback events.
        tags: ["web", "raw_event", "frontend", "partition_type=hourly"]
        columns:
          - name: start_time
            tests:
              - exceed_percentage_threshold:
                  column_name: start_time
                  condition: "start_time > 0"
                  threshold: 0
                  p_date: "current_date()"
          - name: end_time
            tests:
              - exceed_percentage_threshold:
                  column_name: end_time
                  condition: "end_time > 0"
                  threshold: 0
                  p_date: "current_date()"
      - name: web_audio_creation
        description: |
          Web audio creation events from web platform tracking audio creation interactions.
          This table contains event data for audio creation actions including CreateSong and UploadSong events.
          Events are loaded daily from S3 stages containing JSON event files.
        tags: ["web", "raw_event", "frontend", "partition_type=daily"]
        columns:
          - name: id
            description: "Auto-incrementing unique identifier (NUMBER)"
          - name: event_name
            description: "Name of the audio creation event"
          - name: is_mobile
            description: "Whether user is on mobile device (BOOLEAN)"
          - name: continue_clip_id
            description: "Clip ID for continue action (VARCHAR)"
          - name: reuse_prompt_clip_id
            description: "Clip ID for reuse prompt action (VARCHAR)"
          - name: new_clip_ids
            description: "New clip IDs created (VARCHAR/JSON array)"
          - name: action_name
            description: "Specific action taken (CreateSong, UploadSong, etc.)"
          - name: click_source_url
            description: "URL source of the click (VARCHAR)"
          - name: user_id
            description: "User identifier (VARCHAR)"
          - name: is_custom_mode
            description: "Whether custom mode was used (BOOLEAN)"
          - name: has_lyrics
            description: "Whether clip has lyrics (BOOLEAN)"
          - name: has_style
            description: "Whether clip has style (BOOLEAN)"
          - name: has_title
            description: "Whether clip has title (BOOLEAN)"
          - name: has_description
            description: "Whether clip has description (BOOLEAN)"
          - name: is_instrumental_mode
            description: "Whether instrumental mode was used (BOOLEAN)"
          - name: is_uploaded
            description: "Whether audio was uploaded (BOOLEAN)"
          - name: upload_type
            description: "Type of upload (VARCHAR)"
          - name: model_version
            description: "Model version used (VARCHAR)"
          - name: recommend_style
            description: "Recommended style (VARCHAR)"
          - name: is_generate_lyircs_used
            description: "Whether generate lyrics was used (BOOLEAN)"
          - name: is_recommend_style_used
            description: "Whether recommend style was used (BOOLEAN)"
          - name: is_continue_clip_public
            description: "Whether continue clip is public (BOOLEAN)"
          - name: is_reuse_prompt_clip_public
            description: "Whether reuse prompt clip is public (BOOLEAN)"
          - name: user_agent
            description: "Browser user agent string (VARCHAR)"
          - name: locale
            description: "User locale/language (VARCHAR)"
          - name: timezone
            description: "User timezone (VARCHAR)"
          - name: p_hour
            description: "Partition hour for table optimization (NUMBER)"
          - name: client_ip
            description: "User IP address (VARCHAR)"
          - name: session_id
            description: "User session identifier (VARCHAR)"
          - name: properties
            description: "Additional event properties in JSON format (VARIANT)"
          - name: hashed_user_agent_id
            description: "Hashed user agent identifier (VARCHAR)"
          - name: region_name
            description: "User region/state (VARCHAR)"
          - name: client_timestamp
            description: "When event occurred on client side (TIMESTAMP_TZ)"
          - name: server_timestamp
            description: "When event was received by server (TIMESTAMP_TZ)"
          - name: server_process_timestamp
            description: "When event was processed by server (TIMESTAMP_TZ)"
          - name: country
            description: "User country (VARCHAR)"
          - name: city
            description: "User city (VARCHAR)"
          - name: p_date
            description: "Partition date for table optimization (DATE)"
