101 lines
1.8 KiB
Go
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
|
||
|
}
|