syntax = "proto3";

package activity;

option go_package = "github.com/echofi-ai/schema/v2/types/activity";


import "music/track.proto";
import "music/album.proto";
import "music/artist.proto";

// UserFavorite message represents a user favorite (track, album, or artist) with metadata
message UserFavorite {
  // Favorite ID
  int32 favorite_id = 1;

  // User ID
  string user_id = 2;

  // Item type (track, album, or artist)
  string item_type = 3;

  // Item ID (references track_id, album_id, or artist_id depending on item_type)
  int32 item_id = 4;

  // Date added (Unix seconds)
  int64 date_added = 5;

  // Item metadata - only one will be populated based on item_type
  oneof item_metadata {
    // Track metadata (includes artist information)
    TrackWithArtist track = 6;

    // Album metadata (includes artist information)
    AlbumWithArtist album = 7;

    // Artist metadata
    music.Artist artist = 8;
  }
}

// TrackWithArtist combines track information with artist details
message TrackWithArtist {
  // Track information
  music.Track track = 1;

  // Artist information for the track
  music.Artist artist = 2;

  // Album information (optional, if track belongs to an album)
  optional music.Album album = 3;
}

// AlbumWithArtist combines album information with artist details
message AlbumWithArtist {
  // Album information
  music.Album album = 1;

  // Artist information for the album
  music.Artist artist = 2;
}
