my god...it's finally done
This commit is contained in:
parent
2baf71214e
commit
19d76ebc47
43 changed files with 1008 additions and 550 deletions
|
@ -1,7 +1,7 @@
|
|||
package music
|
||||
|
||||
import (
|
||||
"arimelody.me/arimelody.me/music/model"
|
||||
"arimelody-web/music/model"
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
|
@ -45,27 +45,54 @@ func GetArtistsNotOnRelease(db *sqlx.DB, releaseID string) ([]*model.Artist, err
|
|||
}
|
||||
|
||||
func GetArtistCredits(db *sqlx.DB, artistID string) ([]*model.Credit, error) {
|
||||
type DBCredit struct {
|
||||
Release string
|
||||
Artist string
|
||||
Role string
|
||||
Primary bool `db:"is_primary"`
|
||||
}
|
||||
var dbCredits []DBCredit
|
||||
|
||||
err := db.Select(&dbCredits, "SELECT * FROM musiccredit WHERE artist=$1", artistID)
|
||||
rows, err := db.Query(
|
||||
"SELECT release.id,release.title,release.artwork,artist.id,artist.name,artist.website,artist.avatar,role,is_primary "+
|
||||
"FROM musiccredit "+
|
||||
"JOIN musicrelease AS release ON release=release.id "+
|
||||
"JOIN artist ON artist=artist.id "+
|
||||
"WHERE artist=$1 "+
|
||||
"ORDER BY release_date DESC",
|
||||
artistID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
defer rows.Close()
|
||||
|
||||
type NamePrimary struct {
|
||||
Name string `json:"name"`
|
||||
Primary bool `json:"primary" db:"is_primary"`
|
||||
}
|
||||
var credits []*model.Credit
|
||||
for _, credit := range dbCredits {
|
||||
credits = append(credits, &model.Credit{
|
||||
Release: model.Release{ ID: credit.Release },
|
||||
Artist: model.Artist{ ID: credit.Artist },
|
||||
Role: credit.Role,
|
||||
Primary: credit.Primary,
|
||||
})
|
||||
for rows.Next() {
|
||||
var credit model.Credit
|
||||
err = rows.Scan(
|
||||
&credit.Release.ID,
|
||||
&credit.Release.Title,
|
||||
&credit.Release.Artwork,
|
||||
&credit.Artist.ID,
|
||||
&credit.Artist.Name,
|
||||
&credit.Artist.Website,
|
||||
&credit.Artist.Avatar,
|
||||
&credit.Role,
|
||||
&credit.Primary,
|
||||
)
|
||||
|
||||
otherArtists := []NamePrimary{}
|
||||
err = db.Select(&otherArtists,
|
||||
"SELECT name,is_primary FROM artist "+
|
||||
"JOIN musiccredit ON artist=id "+
|
||||
"WHERE release=$1",
|
||||
credit.Release.ID)
|
||||
for _, otherCredit := range otherArtists {
|
||||
credit.Release.Credits = append(credit.Release.Credits, &model.Credit{
|
||||
Artist: model.Artist{
|
||||
Name: otherCredit.Name,
|
||||
},
|
||||
Primary: otherCredit.Primary,
|
||||
})
|
||||
}
|
||||
|
||||
credits = append(credits, &credit)
|
||||
}
|
||||
|
||||
return credits, nil
|
||||
|
@ -104,11 +131,11 @@ func UpdateArtist(db *sqlx.DB, artist *model.Artist) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func DeleteArtist(db *sqlx.DB, artist *model.Artist) error {
|
||||
func DeleteArtist(db *sqlx.DB, artistID string) error {
|
||||
_, err := db.Exec(
|
||||
"DELETE FROM artist "+
|
||||
"WHERE id=$1",
|
||||
artist.ID,
|
||||
artistID,
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue