package main import "time" // MusicItem represents a music item. type MusicItem struct { Title string `json:"title"` Artist string `json:"artist"` AudioURL string `json:"audio_url"` AudioFullURL string `json:"audio_full_url"` M3U8URL string `json:"m3u8_url"` LyricURL string `json:"lyric_url"` CoverURL string `json:"cover_url"` Duration int `json:"duration"` FromCache bool `json:"from_cache"` IP string `json:"ip"` } // User represents a user account type User struct { ID string `json:"id"` Username string `json:"username"` Email string `json:"email"` Password string `json:"-"` // Never expose password in JSON CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } // UserPlaylist represents a user's custom playlist type UserPlaylist struct { ID string `json:"id"` UserID string `json:"user_id"` Name string `json:"name"` Description string `json:"description"` CoverURL string `json:"cover_url"` Songs []MusicItem `json:"songs"` IsPublic bool `json:"is_public"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } // LoginRequest represents login credentials type LoginRequest struct { Username string `json:"username"` Password string `json:"password"` } // RegisterRequest represents registration data type RegisterRequest struct { Username string `json:"username"` Email string `json:"email"` Password string `json:"password"` } // AuthResponse represents authentication response type AuthResponse struct { Token string `json:"token"` User User `json:"user"` }