release edit page! + a lot of other stuff oml
Signed-off-by: ari melody <ari@arimelody.me>
This commit is contained in:
parent
f276ef1ff2
commit
10f19d46db
23 changed files with 981 additions and 347 deletions
|
@ -76,7 +76,7 @@ func CreateReleaseDB(db *sqlx.DB, release *model.Release) error {
|
|||
release.Title,
|
||||
release.Description,
|
||||
release.ReleaseType,
|
||||
release.ReleaseDate.Format("2-Jan-2006"),
|
||||
release.ReleaseDate.Format("2006-01-02 15:04:05"),
|
||||
release.Artwork,
|
||||
release.Buyname,
|
||||
release.Buylink,
|
||||
|
@ -91,15 +91,14 @@ func CreateReleaseDB(db *sqlx.DB, release *model.Release) error {
|
|||
func UpdateReleaseDB(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) "+
|
||||
"VALUES ($2, $3, $4, $5, $6, $7, $8, $9) "+
|
||||
"visible=$2, title=$3, description=$4, type=$5, release_date=$6, artwork=$7, buyname=$8, buylink=$9 "+
|
||||
"WHERE id=$1",
|
||||
release.ID,
|
||||
release.Visible,
|
||||
release.Title,
|
||||
release.Description,
|
||||
release.ReleaseType,
|
||||
release.ReleaseDate.Format("2-Jan-2006"),
|
||||
release.ReleaseDate.Format("2006-01-02 15:04:05"),
|
||||
release.Artwork,
|
||||
release.Buyname,
|
||||
release.Buylink,
|
||||
|
|
|
@ -2,13 +2,17 @@ package model
|
|||
|
||||
type (
|
||||
Artist struct {
|
||||
ID string `json:"id"`
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Website string `json:"website"`
|
||||
Avatar string `json:"avatar"`
|
||||
}
|
||||
)
|
||||
|
||||
func (artist Artist) GetWebsite() string {
|
||||
return artist.Website
|
||||
}
|
||||
|
||||
func (artist Artist) GetAvatar() string {
|
||||
if artist.Avatar == "" {
|
||||
return "/img/default-avatar.png"
|
||||
|
|
|
@ -8,18 +8,18 @@ import (
|
|||
type (
|
||||
ReleaseType string
|
||||
Release struct {
|
||||
ID string `json:"id"`
|
||||
Visible bool `json:"visible"`
|
||||
Title string `json:"title"`
|
||||
Description string `json:"description"`
|
||||
ReleaseType ReleaseType `json:"type" db:"type"`
|
||||
ReleaseDate time.Time `json:"releaseDate" db:"release_date"`
|
||||
Artwork string `json:"artwork"`
|
||||
Buyname string `json:"buyname"`
|
||||
Buylink string `json:"buylink"`
|
||||
Links []*Link `json:"links"`
|
||||
Credits []*Credit `json:"credits"`
|
||||
Tracks []*Track `json:"tracks"`
|
||||
ID string `json:"id"`
|
||||
Visible bool `json:"visible"`
|
||||
Title string `json:"title"`
|
||||
Description string `json:"description"`
|
||||
ReleaseType ReleaseType `json:"type" db:"type"`
|
||||
ReleaseDate time.Time `json:"releaseDate" db:"release_date"`
|
||||
Artwork string `json:"artwork"`
|
||||
Buyname string `json:"buyname"`
|
||||
Buylink string `json:"buylink"`
|
||||
Links []*Link `json:"links"`
|
||||
Credits []*Credit `json:"credits"`
|
||||
Tracks []*Track `json:"tracks"`
|
||||
}
|
||||
)
|
||||
|
||||
|
@ -32,11 +32,8 @@ const (
|
|||
|
||||
// GETTERS
|
||||
|
||||
func (release Release) GetArtwork() string {
|
||||
if release.Artwork == "" {
|
||||
return "/img/default-cover-art.png"
|
||||
}
|
||||
return release.Artwork
|
||||
func (release Release) TextReleaseDate() string {
|
||||
return release.ReleaseDate.Format("2006-01-02T15:04")
|
||||
}
|
||||
|
||||
func (release Release) PrintReleaseDate() string {
|
||||
|
@ -47,6 +44,13 @@ func (release Release) GetReleaseYear() int {
|
|||
return release.ReleaseDate.Year()
|
||||
}
|
||||
|
||||
func (release Release) GetArtwork() string {
|
||||
if release.Artwork == "" {
|
||||
return "/img/default-cover-art.png"
|
||||
}
|
||||
return release.Artwork
|
||||
}
|
||||
|
||||
func (release Release) IsSingle() bool {
|
||||
return len(release.Tracks) == 1;
|
||||
}
|
||||
|
|
|
@ -12,6 +12,19 @@ import (
|
|||
"arimelody.me/arimelody.me/music/model"
|
||||
)
|
||||
|
||||
type (
|
||||
gatewayTrack struct {
|
||||
*model.Track
|
||||
Lyrics template.HTML
|
||||
Number int
|
||||
}
|
||||
|
||||
gatewayRelease struct {
|
||||
*model.Release
|
||||
Tracks []gatewayTrack
|
||||
}
|
||||
)
|
||||
|
||||
// HTTP HANDLERS
|
||||
|
||||
func ServeRelease() http.Handler {
|
||||
|
@ -51,19 +64,6 @@ func ServeGateway() http.Handler {
|
|||
return
|
||||
}
|
||||
|
||||
type (
|
||||
GatewayTrack struct {
|
||||
*model.Track
|
||||
Lyrics template.HTML
|
||||
Number int
|
||||
}
|
||||
|
||||
GatewayRelease struct {
|
||||
*model.Release
|
||||
Tracks []GatewayTrack
|
||||
}
|
||||
)
|
||||
|
||||
id := r.URL.Path[1:]
|
||||
release := global.GetRelease(id)
|
||||
if release == nil {
|
||||
|
@ -71,9 +71,9 @@ func ServeGateway() http.Handler {
|
|||
return
|
||||
}
|
||||
|
||||
tracks := []GatewayTrack{}
|
||||
tracks := []gatewayTrack{}
|
||||
for i, track := range release.Tracks {
|
||||
tracks = append([]GatewayTrack{GatewayTrack{
|
||||
tracks = append([]gatewayTrack{{
|
||||
Track: track,
|
||||
Lyrics: template.HTML(strings.Replace(track.Lyrics, "\n", "<br>", -1)),
|
||||
Number: len(release.Tracks) - i,
|
||||
|
@ -87,9 +87,9 @@ func ServeGateway() http.Handler {
|
|||
return
|
||||
}
|
||||
|
||||
lrw := global.LoggingResponseWriter{w, http.StatusOK}
|
||||
lrw := global.LoggingResponseWriter{ResponseWriter: w, Code: http.StatusOK}
|
||||
|
||||
global.ServeTemplate("music-gateway.html", GatewayRelease{release, tracks}).ServeHTTP(&lrw, r)
|
||||
global.ServeTemplate("music-gateway.html", gatewayRelease{release, tracks}).ServeHTTP(&lrw, r)
|
||||
|
||||
if lrw.Code != http.StatusOK {
|
||||
fmt.Printf("Error rendering music gateway for %s\n", id)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue