2024-08-01 00:39:18 +00:00
|
|
|
package music
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
|
|
|
|
"github.com/jmoiron/sqlx"
|
|
|
|
)
|
|
|
|
|
|
|
|
type Track struct {
|
2024-08-01 02:54:15 +00:00
|
|
|
Number int `json:"number"`
|
|
|
|
Title string `json:"title"`
|
|
|
|
Description string `json:"description"`
|
|
|
|
Lyrics string `json:"lyrics"`
|
|
|
|
PreviewURL string `json:"previewURL"`
|
2024-08-01 00:39:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// GETTERS
|
|
|
|
|
|
|
|
func (track Track) GetNumber() int {
|
2024-08-01 02:54:15 +00:00
|
|
|
return track.Number
|
2024-08-01 00:39:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (track Track) GetTitle() string {
|
2024-08-01 02:54:15 +00:00
|
|
|
return track.Title
|
2024-08-01 00:39:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (track Track) GetDescription() string {
|
2024-08-01 02:54:15 +00:00
|
|
|
return track.Description
|
2024-08-01 00:39:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (track Track) GetLyrics() string {
|
2024-08-01 02:54:15 +00:00
|
|
|
return track.Lyrics
|
2024-08-01 00:39:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (track Track) GetPreviewURL() string {
|
2024-08-01 02:54:15 +00:00
|
|
|
return track.PreviewURL
|
2024-08-01 00:39:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// SETTERS
|
|
|
|
|
|
|
|
func (track Track) SetNumber(number int) error {
|
|
|
|
// TODO: update DB
|
2024-08-01 02:54:15 +00:00
|
|
|
track.Number = number
|
2024-08-01 00:39:18 +00:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (track Track) SetTitle(title string) error {
|
|
|
|
// TODO: update DB
|
2024-08-01 02:54:15 +00:00
|
|
|
track.Title = title
|
2024-08-01 00:39:18 +00:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (track Track) SetDescription(description string) error {
|
|
|
|
// TODO: update DB
|
2024-08-01 02:54:15 +00:00
|
|
|
track.Description = description
|
2024-08-01 00:39:18 +00:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (track Track) SetLyrics(lyrics string) error {
|
|
|
|
// TODO: update DB
|
2024-08-01 02:54:15 +00:00
|
|
|
track.Lyrics = lyrics
|
2024-08-01 00:39:18 +00:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (track Track) SetPreviewURL(previewURL string) error {
|
|
|
|
// TODO: update DB
|
2024-08-01 02:54:15 +00:00
|
|
|
track.PreviewURL = previewURL
|
2024-08-01 00:39:18 +00:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// DATABASE
|
|
|
|
|
|
|
|
func PullReleaseTracks(db *sqlx.DB, releaseID string) ([]Track, error) {
|
|
|
|
var tracks = []Track{}
|
|
|
|
|
|
|
|
track_rows, err := db.Query("SELECT number, title, description, lyrics, preview_url FROM musictracks WHERE release=$1", releaseID)
|
|
|
|
if err != nil {
|
|
|
|
return []Track{}, err
|
|
|
|
}
|
|
|
|
|
|
|
|
for track_rows.Next() {
|
|
|
|
var track = Track{}
|
|
|
|
|
|
|
|
err = track_rows.Scan(
|
2024-08-01 02:54:15 +00:00
|
|
|
&track.Number,
|
|
|
|
&track.Title,
|
|
|
|
&track.Description,
|
|
|
|
&track.Lyrics,
|
|
|
|
&track.PreviewURL,
|
2024-08-01 00:39:18 +00:00
|
|
|
)
|
|
|
|
if err != nil {
|
|
|
|
fmt.Printf("Error while pulling track for release %s: %s\n", releaseID, err)
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
|
|
|
|
tracks = append(tracks, track)
|
|
|
|
}
|
|
|
|
|
|
|
|
return tracks, nil
|
|
|
|
}
|