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
108
api/release.go
108
api/release.go
|
@ -15,14 +15,14 @@ import (
|
|||
|
||||
type releaseBodyJSON struct {
|
||||
ID string `json:"id"`
|
||||
Visible bool `json:"visible"`
|
||||
Title string `json:"title"`
|
||||
Description string `json:"description"`
|
||||
ReleaseType model.ReleaseType `json:"type"`
|
||||
ReleaseDate time.Time `json:"releaseDate"`
|
||||
Artwork string `json:"artwork"`
|
||||
Buyname string `json:"buyname"`
|
||||
Buylink string `json:"buylink"`
|
||||
Visible *bool `json:"visible"`
|
||||
Title *string `json:"title"`
|
||||
Description *string `json:"description"`
|
||||
ReleaseType *model.ReleaseType `json:"type"`
|
||||
ReleaseDate *string `json:"releaseDate"`
|
||||
Artwork *string `json:"artwork"`
|
||||
Buyname *string `json:"buyname"`
|
||||
Buylink *string `json:"buylink"`
|
||||
}
|
||||
|
||||
func ServeCatalog() http.Handler {
|
||||
|
@ -36,7 +36,7 @@ func ServeCatalog() http.Handler {
|
|||
Artwork string `json:"artwork"`
|
||||
Buyname string `json:"buyname"`
|
||||
Buylink string `json:"buylink"`
|
||||
Links []*model.Link `json:"links"`
|
||||
Links []*model.Link `json:"links"`
|
||||
}
|
||||
|
||||
catalog := []CatalogItem{}
|
||||
|
@ -85,26 +85,40 @@ func CreateRelease() http.Handler {
|
|||
http.Error(w, "Release ID cannot be empty\n", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
if data.Title == "" {
|
||||
if *data.Title == "" {
|
||||
http.Error(w, "Release title cannot be empty\n", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
if data.Buyname == nil || *data.Buyname == "" { *data.Buyname = "buy" }
|
||||
if data.Buylink == nil || *data.Buylink == "" { *data.Buylink = "https://arimelody.me" }
|
||||
|
||||
if global.GetRelease(data.ID) != nil {
|
||||
http.Error(w, fmt.Sprintf("Release %s already exists\n", data.ID), http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
releaseDate := time.Time{}
|
||||
if *data.ReleaseDate == "" {
|
||||
http.Error(w, "Release date cannot be empty\n", http.StatusBadRequest)
|
||||
return
|
||||
} else if data.ReleaseDate != nil {
|
||||
releaseDate, err = time.Parse("2006-01-02T15:04", *data.ReleaseDate)
|
||||
if err != nil {
|
||||
http.Error(w, "Invalid release date", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
var release = model.Release{
|
||||
ID: data.ID,
|
||||
Visible: data.Visible,
|
||||
Title: data.Title,
|
||||
Description: data.Description,
|
||||
ReleaseType: data.ReleaseType,
|
||||
ReleaseDate: data.ReleaseDate,
|
||||
Artwork: data.Artwork,
|
||||
Buyname: data.Buyname,
|
||||
Buylink: data.Buylink,
|
||||
Visible: *data.Visible,
|
||||
Title: *data.Title,
|
||||
Description: *data.Description,
|
||||
ReleaseType: *data.ReleaseType,
|
||||
ReleaseDate: releaseDate,
|
||||
Artwork: *data.Artwork,
|
||||
Buyname: *data.Buyname,
|
||||
Buylink: *data.Buylink,
|
||||
Links: []*model.Link{},
|
||||
Credits: []*model.Credit{},
|
||||
Tracks: []*model.Track{},
|
||||
|
@ -153,41 +167,46 @@ func UpdateRelease() http.Handler {
|
|||
return
|
||||
}
|
||||
|
||||
if data.ID == "" { data.ID = release.ID }
|
||||
|
||||
if data.Title == "" {
|
||||
http.Error(w, "Release title cannot be blank\n", http.StatusBadRequest)
|
||||
return
|
||||
var update = *release
|
||||
if data.ID != "" { update.ID = data.ID }
|
||||
if data.Visible != nil { update.Visible = *data.Visible }
|
||||
if data.Title != nil { update.Title = *data.Title }
|
||||
if data.Description != nil { update.Description = *data.Description }
|
||||
if data.ReleaseType != nil { update.ReleaseType = *data.ReleaseType }
|
||||
if data.ReleaseDate != nil {
|
||||
newDate, err := time.Parse("2006-01-02T15:04", *data.ReleaseDate)
|
||||
if err != nil {
|
||||
http.Error(w, "Invalid release date", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
update.ReleaseDate = newDate
|
||||
}
|
||||
|
||||
var new_release = model.Release{
|
||||
ID: data.ID,
|
||||
Visible: data.Visible,
|
||||
Title: data.Title,
|
||||
Description: data.Description,
|
||||
ReleaseType: data.ReleaseType,
|
||||
ReleaseDate: data.ReleaseDate,
|
||||
Artwork: data.Artwork,
|
||||
Buyname: data.Buyname,
|
||||
Buylink: data.Buylink,
|
||||
if data.Artwork != nil { update.Artwork = *data.Artwork }
|
||||
if data.Buyname != nil {
|
||||
if *data.Buyname == "" {
|
||||
http.Error(w, "Release buy name cannot be empty", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
update.Buyname = *data.Buyname
|
||||
}
|
||||
if data.Buylink != nil { update.Buylink = *data.Buylink }
|
||||
|
||||
err = controller.UpdateReleaseDB(global.DB, release)
|
||||
err = controller.UpdateReleaseDB(global.DB, &update)
|
||||
if err != nil {
|
||||
fmt.Printf("Failed to update release %s: %s\n", release.ID, err)
|
||||
http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
release.ID = new_release.ID
|
||||
release.Visible = new_release.Visible
|
||||
release.Title = new_release.Title
|
||||
release.Description = new_release.Description
|
||||
release.ReleaseType = new_release.ReleaseType
|
||||
release.ReleaseDate = new_release.ReleaseDate
|
||||
release.Artwork = new_release.Artwork
|
||||
release.Buyname = new_release.Buyname
|
||||
release.Buylink = new_release.Buylink
|
||||
release.ID = update.ID
|
||||
release.Visible = update.Visible
|
||||
release.Title = update.Title
|
||||
release.Description = update.Description
|
||||
release.ReleaseType = update.ReleaseType
|
||||
release.ReleaseDate = update.ReleaseDate
|
||||
release.Artwork = update.Artwork
|
||||
release.Buyname = update.Buyname
|
||||
release.Buylink = update.Buylink
|
||||
|
||||
w.Header().Add("Content-Type", "application/json")
|
||||
err = json.NewEncoder(w).Encode(release)
|
||||
|
@ -195,6 +214,7 @@ func UpdateRelease() http.Handler {
|
|||
http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
if len(segments) == 2 {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue