package types

// TrackStats représente les statistiques d'un track
// Ce type est partagé entre analytics_service et track_service
type TrackStats struct {
	// Champs de analytics_service
	TotalPlays      int64   `json:"total_plays"`
	UniqueListeners int64   `json:"unique_listeners"`
	AverageDuration float64 `json:"average_duration"`
	CompletionRate  float64 `json:"completion_rate"`

	// Champs additionnels de track_service
	Views         int64 `json:"views,omitempty"`
	Likes         int64 `json:"likes,omitempty"`
	Comments      int64 `json:"comments,omitempty"`
	TotalPlayTime int64 `json:"total_play_time,omitempty"` // seconds
	Downloads     int64 `json:"downloads,omitempty"`
}

// UserStats représente les statistiques d'un utilisateur
// Ce type est partagé entre analytics_service et user_service
type UserStats struct {
	// Champs de analytics_service
	TotalPlays      int64   `json:"total_plays"`
	UniqueTracks    int64   `json:"unique_tracks"`
	TotalDuration   int64   `json:"total_duration"` // seconds
	AverageDuration float64 `json:"average_duration"`

	// Champs additionnels de user_service
	UserID         int64 `json:"user_id,omitempty"`
	FollowersCount int   `json:"followers_count,omitempty"`
	FollowingCount int   `json:"following_count,omitempty"`
	TracksCount    int   `json:"tracks_count,omitempty"`
	PlaylistsCount int   `json:"playlists_count,omitempty"`
	LikesCount     int   `json:"likes_count,omitempty"`
	CommentsCount  int   `json:"comments_count,omitempty"`
}
