2024-08-02 21:48:26 +00:00
|
|
|
package music
|
|
|
|
|
|
|
|
import (
|
2024-08-02 23:27:30 +00:00
|
|
|
"fmt"
|
|
|
|
|
|
|
|
"arimelody.me/arimelody.me/global"
|
2024-08-02 21:48:26 +00:00
|
|
|
"arimelody.me/arimelody.me/music/model"
|
|
|
|
"github.com/jmoiron/sqlx"
|
|
|
|
)
|
|
|
|
|
|
|
|
// DATABASE
|
|
|
|
|
2024-08-02 23:27:30 +00:00
|
|
|
func PullAllReleases(db *sqlx.DB) ([]*model.Release, error) {
|
|
|
|
var release_rows = []*model.Release{}
|
|
|
|
var releases = []*model.Release{}
|
2024-08-02 21:48:26 +00:00
|
|
|
|
2024-08-02 23:27:30 +00:00
|
|
|
err := db.Select(&release_rows, "SELECT * FROM musicrelease ORDER BY release_date DESC")
|
2024-08-02 21:48:26 +00:00
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
2024-08-02 23:27:30 +00:00
|
|
|
for _, release := range release_rows {
|
|
|
|
release.Credits, err = PullReleaseCredits(global.DB, release.ID)
|
|
|
|
if err != nil {
|
|
|
|
fmt.Printf("Error pulling credits for %s: %s\n", release.ID, err)
|
|
|
|
}
|
|
|
|
release.Links, _ = PullReleaseLinks(global.DB, release.ID)
|
|
|
|
if err != nil {
|
|
|
|
fmt.Printf("Error pulling links for %s: %s\n", release.ID, err)
|
|
|
|
}
|
|
|
|
release.Tracks = make([]*model.Track, 0)
|
|
|
|
releases = append(releases, release)
|
|
|
|
}
|
|
|
|
|
2024-08-02 21:48:26 +00:00
|
|
|
return releases, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func CreateReleaseDB(db *sqlx.DB, release *model.Release) error {
|
|
|
|
_, err := db.Exec(
|
|
|
|
"INSERT INTO musicrelease "+
|
|
|
|
"(id, visible, title, description, type, release_date, artwork, buyname, buylink) "+
|
|
|
|
"VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)",
|
|
|
|
release.ID,
|
|
|
|
release.Visible,
|
|
|
|
release.Title,
|
|
|
|
release.Description,
|
|
|
|
release.ReleaseType,
|
|
|
|
release.ReleaseDate.Format("2-Jan-2006"),
|
|
|
|
release.Artwork,
|
|
|
|
release.Buyname,
|
|
|
|
release.Buylink,
|
|
|
|
)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func UpdateReleaseDB(db *sqlx.DB, release *model.Release) error {
|
|
|
|
_, err := db.Exec(
|
|
|
|
"UPDATE musicrelease SET "+
|
|
|
|
"title=$2, description=$3, type=$4, release_date=$5, artwork=$6, buyname=$7, buylink=$8) "+
|
|
|
|
"VALUES ($2, $3, $4, $5, $6, $7, $8) "+
|
|
|
|
"WHERE id=$1",
|
|
|
|
release.ID,
|
|
|
|
release.Title,
|
|
|
|
release.Description,
|
|
|
|
release.ReleaseType,
|
|
|
|
release.ReleaseDate.Format("2-Jan-2006"),
|
|
|
|
release.Artwork,
|
|
|
|
release.Buyname,
|
|
|
|
release.Buylink,
|
|
|
|
)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2024-08-03 14:02:01 +00:00
|
|
|
func DeleteReleaseDB(db *sqlx.DB, release *model.Release) error {
|
2024-08-02 21:48:26 +00:00
|
|
|
_, err := db.Exec(
|
|
|
|
"DELETE FROM musicrelease "+
|
|
|
|
"WHERE id=$1",
|
|
|
|
release.ID,
|
|
|
|
)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|