HEAVY: finish music service migration, tidy up services, more tests
This commit is contained in:
parent
9e311df462
commit
90a671982c
47 changed files with 2698 additions and 902 deletions
137
repository/music/track_postgres.go
Normal file
137
repository/music/track_postgres.go
Normal file
|
|
@ -0,0 +1,137 @@
|
|||
package music
|
||||
|
||||
import (
|
||||
"arimelody-web/model"
|
||||
)
|
||||
|
||||
func (repo *MusicRepositoryPostgres) GetAllTracks() ([]*model.Track, error) {
|
||||
var tracks = []*model.Track{}
|
||||
|
||||
err := repo.db.Select(&tracks, "SELECT * FROM musictrack")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return tracks, nil
|
||||
}
|
||||
func (repo *MusicRepositoryPostgres) GetTrackCount() (int, error) {
|
||||
var count int
|
||||
err := repo.db.Get(&count, "SELECT count(*) FROM musictrack")
|
||||
return count, err
|
||||
}
|
||||
|
||||
func (repo *MusicRepositoryPostgres) GetTrackByID(id string) (*model.Track, error) {
|
||||
var track = model.Track{}
|
||||
|
||||
stmt, _ := repo.db.Preparex("SELECT * FROM musictrack WHERE id=$1")
|
||||
err := stmt.Get(&track, id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &track, nil
|
||||
}
|
||||
|
||||
func (repo *MusicRepositoryPostgres) GetOrphanTracks() ([]*model.Track, error) {
|
||||
var tracks = []*model.Track{}
|
||||
|
||||
err := repo.db.Select(&tracks, "SELECT * FROM musictrack WHERE id NOT IN (SELECT track FROM musicreleasetrack)")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return tracks, nil
|
||||
}
|
||||
|
||||
func (repo *MusicRepositoryPostgres) GetTracksNotOnRelease(releaseID string) ([]*model.Track, error) {
|
||||
var tracks = []*model.Track{}
|
||||
|
||||
err := repo.db.Select(&tracks,
|
||||
"SELECT * FROM musictrack "+
|
||||
"WHERE id NOT IN "+
|
||||
"(SELECT track FROM musicreleasetrack WHERE release=$1)",
|
||||
releaseID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return tracks, nil
|
||||
}
|
||||
|
||||
func (repo *MusicRepositoryPostgres) GetTrackReleases(trackID string) ([]*model.Release, error) {
|
||||
var releases = []*model.Release{}
|
||||
|
||||
err := repo.db.Select(&releases,
|
||||
"SELECT id,title,type,release_date,artwork,buylink "+
|
||||
"FROM musicrelease "+
|
||||
"JOIN musicreleasetrack ON release=id "+
|
||||
"WHERE track=$1 "+
|
||||
"ORDER BY release_date",
|
||||
trackID,
|
||||
)
|
||||
if err != nil { return nil, err }
|
||||
|
||||
return releases, nil
|
||||
}
|
||||
|
||||
func (repo *MusicRepositoryPostgres) CreateTrack(
|
||||
title string,
|
||||
description string,
|
||||
lyrics string,
|
||||
previewURL string,
|
||||
) (string, error) {
|
||||
var trackID string
|
||||
err := repo.db.QueryRow(
|
||||
"INSERT INTO musictrack (title, description, lyrics, preview_url) "+
|
||||
"VALUES ($1, $2, $3, $4) "+
|
||||
"RETURNING id",
|
||||
title,
|
||||
description,
|
||||
lyrics,
|
||||
previewURL,
|
||||
).Scan(&trackID)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return trackID, nil
|
||||
}
|
||||
|
||||
func (repo *MusicRepositoryPostgres) UpdateTrack(track *model.Track) error {
|
||||
_, err := repo.db.Exec(
|
||||
"UPDATE musictrack "+
|
||||
"SET title=$2, description=$3, lyrics=$4, preview_url=$5 "+
|
||||
"WHERE id=$1",
|
||||
track.ID,
|
||||
track.Title,
|
||||
track.Description,
|
||||
track.Lyrics,
|
||||
track.PreviewURL,
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
func (repo *MusicRepositoryPostgres) UpdateTrackTitle(id string, title string) error {
|
||||
_, err := repo.db.Exec("UPDATE musictrack SET title=$2 WHERE id=$1", id, title)
|
||||
return err
|
||||
}
|
||||
func (repo *MusicRepositoryPostgres) UpdateTrackDescription(id string, description string) error {
|
||||
_, err := repo.db.Exec("UPDATE musictrack SET description=$2 WHERE id=$1", id, description)
|
||||
return err
|
||||
}
|
||||
func (repo *MusicRepositoryPostgres) UpdateTrackLyrics(id string, lyrics string) error {
|
||||
_, err := repo.db.Exec("UPDATE musictrack SET lyrics=$2 WHERE id=$1", id, lyrics)
|
||||
return err
|
||||
}
|
||||
func (repo *MusicRepositoryPostgres) UpdateTrackPreviewURL(id string, previewURL string) error {
|
||||
_, err := repo.db.Exec("UPDATE musictrack SET preview_url=$2 WHERE id=$1", id, previewURL)
|
||||
return err
|
||||
}
|
||||
|
||||
func (repo *MusicRepositoryPostgres) DeleteTrack(id string) (string, error) {
|
||||
var deletedID string
|
||||
err := repo.db.Get(&deletedID, "DELETE FROM musictrack WHERE id=$1 RETURNING id", id)
|
||||
return deletedID, err
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue