arimelody.me/api/v1/music/track.go
2024-08-31 01:52:33 +01:00

101 lines
1.8 KiB
Go

package music
import (
"fmt"
"github.com/jmoiron/sqlx"
)
type Track struct {
number int
title string
description string
lyrics string
previewURL string
}
// 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
}