arimelody.me/music/track.go
ari melody cba791deba MORE REFACTORING!! + some improvements
Signed-off-by: ari melody <ari@arimelody.me>
2024-08-31 01:52:35 +01:00

101 lines
1.9 KiB
Go

package music
import (
"fmt"
"github.com/jmoiron/sqlx"
)
type Track struct {
Number int `json:"number"`
Title string `json:"title"`
Description string `json:"description"`
Lyrics string `json:"lyrics"`
PreviewURL string `json:"previewURL"`
}
// GETTERS
func (track Track) GetNumber() int {
return track.Number
}
func (track Track) GetTitle() string {
return track.Title
}
func (track Track) GetDescription() string {
return track.Description
}
func (track Track) GetLyrics() string {
return track.Lyrics
}
func (track Track) GetPreviewURL() string {
return track.PreviewURL
}
// SETTERS
func (track Track) SetNumber(number int) error {
// TODO: update DB
track.Number = number
return nil
}
func (track Track) SetTitle(title string) error {
// TODO: update DB
track.Title = title
return nil
}
func (track Track) SetDescription(description string) error {
// TODO: update DB
track.Description = description
return nil
}
func (track Track) SetLyrics(lyrics string) error {
// TODO: update DB
track.Lyrics = lyrics
return nil
}
func (track Track) SetPreviewURL(previewURL string) error {
// TODO: update DB
track.PreviewURL = previewURL
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(
&track.Number,
&track.Title,
&track.Description,
&track.Lyrics,
&track.PreviewURL,
)
if err != nil {
fmt.Printf("Error while pulling track for release %s: %s\n", releaseID, err)
continue
}
tracks = append(tracks, track)
}
return tracks, nil
}