package music import ( "arimelody.me/arimelody.me/music/model" "github.com/jmoiron/sqlx" ) // DATABASE func PullAllTracks(db *sqlx.DB) ([]*model.Track, error) { var tracks = []*model.Track{} err := db.Select(&tracks, "SELECT id, title, description, lyrics, preview_url FROM musictrack") if err != nil { return nil, err } return tracks, nil } func PullOrphanTracks(db *sqlx.DB) ([]*model.Track, error) { var tracks = []*model.Track{} err := db.Select(&tracks, "SELECT id, title, description, lyrics, preview_url FROM musictrack "+ "WHERE id NOT IN "+ "(SELECT track FROM musicreleasetrack)", ) if err != nil { return nil, err } return tracks, nil } func CreateTrackDB(db *sqlx.DB, track *model.Track) (string, error) { var trackID string err := db.QueryRow( "INSERT INTO musictrack (title, description, lyrics, preview_url) "+ "VALUES ($1, $2, $3, $4) "+ "RETURNING id", track.Title, track.Description, track.Lyrics, track.PreviewURL, ).Scan(&trackID) if err != nil { return "", err } return trackID, nil } func UpdateTrackDB(db *sqlx.DB, track *model.Track) error { _, err := db.Exec( "UPDATE musictrack "+ "SET title=$2, description=$3, lyrics=$4, preview_url=$5 "+ "WHERE id=$1"+ "RETURNING id", track.ID, track.Title, track.Description, track.Lyrics, track.PreviewURL, ) if err != nil { return err } return nil } func DeleteTrackDB(db *sqlx.DB, track *model.Track) error { _, err := db.Exec( "DELETE FROM musictrack "+ "WHERE id=$1", track.ID, ) if err != nil { return err } return nil }