turns out rewriting all of your database code takes a while

This commit is contained in:
ari melody 2024-09-01 04:43:32 +01:00
parent 1998a36d6d
commit 965d6f5c3e
30 changed files with 947 additions and 1036 deletions

View file

@ -1,17 +1,22 @@
package music
import (
"errors"
"fmt"
"arimelody.me/arimelody.me/global"
"arimelody.me/arimelody.me/music/model"
"github.com/jmoiron/sqlx"
)
// DATABASE
func GetRelease(db *sqlx.DB, id string) (*model.Release, error) {
var releases = model.Release{}
func PullAllReleases(db *sqlx.DB) ([]*model.Release, error) {
err := db.Get(&releases, "SELECT * FROM musicrelease WHERE id=$1", id)
if err != nil {
return nil, err
}
return &releases, nil
}
func GetAllReleases(db *sqlx.DB) ([]*model.Release, error) {
var releases = []*model.Release{}
err := db.Select(&releases, "SELECT * FROM musicrelease ORDER BY release_date DESC")
@ -19,33 +24,15 @@ func PullAllReleases(db *sqlx.DB) ([]*model.Release, error) {
return nil, err
}
for _, release := range releases {
release.Credits, err = PullReleaseCredits(global.DB, release.ID)
if err != nil {
fmt.Printf("Error pulling credits for %s: %s\n", release.ID, err)
release.Credits = []*model.Credit{}
}
release.Links, err = PullReleaseLinks(global.DB, release.ID)
if err != nil {
fmt.Printf("Error pulling links for %s: %s\n", release.ID, err)
release.Links = []*model.Link{}
}
release.Tracks, err = PullReleaseTracksDB(global.DB, release)
if err != nil {
fmt.Printf("Error pulling tracks for %s: %s\n", release.ID, err)
release.Tracks = []*model.Track{}
}
}
return releases, nil
}
func PullReleaseTracksDB(db *sqlx.DB, release *model.Release) ([]*model.Track, error) {
var track_rows = []string{}
func GetReleaseTracks(db *sqlx.DB, release *model.Release) ([]*model.Track, error) {
var tracks = []*model.Track{}
err := db.Select(&track_rows,
"SELECT track FROM musicreleasetrack "+
err := db.Select(&tracks,
"SELECT musictrack.* FROM musictrack "+
"JOIN musicreleasetrack ON track=id "+
"WHERE release=$1 "+
"ORDER BY number ASC",
release.ID,
@ -54,19 +41,10 @@ func PullReleaseTracksDB(db *sqlx.DB, release *model.Release) ([]*model.Track, e
return nil, err
}
for _, trackID := range track_rows {
var track = global.GetTrack(trackID)
if track == nil {
return nil, errors.New("Recieved a track from the DB that does not exist in memory")
}
track.Release = release
tracks = append(tracks, track)
}
return tracks, nil
}
func CreateReleaseDB(db *sqlx.DB, release *model.Release) error {
func CreateRelease(db *sqlx.DB, release *model.Release) error {
_, err := db.Exec(
"INSERT INTO musicrelease "+
"(id, visible, title, description, type, release_date, artwork, buyname, buylink) "+
@ -88,7 +66,7 @@ func CreateReleaseDB(db *sqlx.DB, release *model.Release) error {
return nil
}
func UpdateReleaseDB(db *sqlx.DB, release *model.Release) error {
func UpdateRelease(db *sqlx.DB, release *model.Release) error {
_, err := db.Exec(
"UPDATE musicrelease SET "+
"visible=$2, title=$3, description=$4, type=$5, release_date=$6, artwork=$7, buyname=$8, buylink=$9 "+
@ -110,7 +88,7 @@ func UpdateReleaseDB(db *sqlx.DB, release *model.Release) error {
return nil
}
func UpdateReleaseTracksDB(db *sqlx.DB, release *model.Release, new_tracks []*model.Track) error {
func UpdateReleaseTracks(db *sqlx.DB, release *model.Release, new_tracks []*model.Track) error {
_, err := db.Exec(
"DELETE FROM musicreleasetrack "+
"WHERE release=$1",
@ -137,7 +115,7 @@ func UpdateReleaseTracksDB(db *sqlx.DB, release *model.Release, new_tracks []*mo
return nil
}
func UpdateReleaseCreditsDB(db *sqlx.DB, release *model.Release, new_credits []*model.Credit) error {
func UpdateReleaseCredits(db *sqlx.DB, release *model.Release, new_credits []*model.Credit) error {
_, err := db.Exec(
"DELETE FROM musiccredit "+
"WHERE release=$1",
@ -165,7 +143,7 @@ func UpdateReleaseCreditsDB(db *sqlx.DB, release *model.Release, new_credits []*
return nil
}
func UpdateReleaseLinksDB(db *sqlx.DB, release *model.Release, new_links []*model.Link) error {
func UpdateReleaseLinks(db *sqlx.DB, release *model.Release, new_links []*model.Link) error {
_, err := db.Exec(
"DELETE FROM musiclink "+
"WHERE release=$1",
@ -192,7 +170,7 @@ func UpdateReleaseLinksDB(db *sqlx.DB, release *model.Release, new_links []*mode
return nil
}
func DeleteReleaseDB(db *sqlx.DB, release *model.Release) error {
func DeleteRelease(db *sqlx.DB, release *model.Release) error {
_, err := db.Exec(
"DELETE FROM musicrelease "+
"WHERE id=$1",
@ -204,3 +182,34 @@ func DeleteReleaseDB(db *sqlx.DB, release *model.Release) error {
return nil
}
func GetFullRelease(db *sqlx.DB, release *model.Release) (*model.FullRelease, error) {
// get credits
credits, err := GetReleaseCredits(db, release)
if err != nil {
return nil, err
}
// get tracks
dbTracks, err := GetReleaseTracks(db, release)
if err != nil {
return nil, err
}
tracks := []model.DisplayTrack{}
for i, track := range dbTracks {
tracks = append(tracks, track.MakeDisplay(i + 1))
}
// get links
links, err := GetReleaseLinks(db, release)
if err != nil {
return nil, err
}
return &model.FullRelease{
Release: release,
Tracks: tracks,
Credits: credits,
Links: links,
}, nil
}