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
|
@ -10,6 +10,13 @@ import (
|
|||
controller "arimelody.me/arimelody.me/music/controller"
|
||||
)
|
||||
|
||||
type artistJSON struct {
|
||||
ID string `json:"id"`
|
||||
Name *string `json:"name"`
|
||||
Website *string `json:"website"`
|
||||
Avatar *string `json:"avatar"`
|
||||
}
|
||||
|
||||
func ServeAllArtists() http.Handler {
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Add("Content-Type", "application/json")
|
||||
|
@ -78,7 +85,7 @@ func CreateArtist() http.Handler {
|
|||
return
|
||||
}
|
||||
|
||||
var data model.Artist
|
||||
var data artistJSON
|
||||
err := json.NewDecoder(r.Body).Decode(&data)
|
||||
if err != nil {
|
||||
fmt.Printf("Failed to create artist: %s\n", err)
|
||||
|
@ -90,7 +97,7 @@ func CreateArtist() http.Handler {
|
|||
http.Error(w, "Artist ID cannot be blank\n", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
if data.Name == "" {
|
||||
if data.Name == nil || *data.Name == "" {
|
||||
http.Error(w, "Artist name cannot be blank\n", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
@ -102,9 +109,9 @@ func CreateArtist() http.Handler {
|
|||
|
||||
var artist = model.Artist{
|
||||
ID: data.ID,
|
||||
Name: data.Name,
|
||||
Website: data.Website,
|
||||
Avatar: data.Avatar,
|
||||
Name: *data.Name,
|
||||
Website: *data.Website,
|
||||
Avatar: *data.Avatar,
|
||||
}
|
||||
|
||||
err = controller.CreateArtistDB(global.DB, &artist)
|
||||
|
@ -138,7 +145,7 @@ func UpdateArtist() http.Handler {
|
|||
return
|
||||
}
|
||||
|
||||
var data model.Artist
|
||||
var data artistJSON
|
||||
err := json.NewDecoder(r.Body).Decode(&data)
|
||||
if err != nil {
|
||||
fmt.Printf("Failed to update artist: %s\n", err)
|
||||
|
@ -153,24 +160,24 @@ func UpdateArtist() http.Handler {
|
|||
return
|
||||
}
|
||||
|
||||
if data.ID == "" { data.ID = artist.ID }
|
||||
var update = *artist
|
||||
|
||||
if data.Name == "" {
|
||||
http.Error(w, "Artist name cannot be blank\n", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
if data.ID != "" { update.ID = data.ID }
|
||||
if data.Name != nil { update.Name = *data.Name }
|
||||
if data.Website != nil { update.Website = *data.Website }
|
||||
if data.Avatar != nil { update.Avatar = *data.Avatar }
|
||||
|
||||
err = controller.UpdateArtistDB(global.DB, &data)
|
||||
err = controller.UpdateArtistDB(global.DB, &update)
|
||||
if err != nil {
|
||||
fmt.Printf("Failed to update artist %s: %s\n", artist.ID, err)
|
||||
http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
artist.ID = data.ID
|
||||
artist.Name = data.Name
|
||||
artist.Website = data.Website
|
||||
artist.Avatar = data.Avatar
|
||||
artist.ID = update.ID
|
||||
artist.Name = update.Name
|
||||
artist.Website = update.Website
|
||||
artist.Avatar = update.Avatar
|
||||
|
||||
w.Header().Add("Content-Type", "application/json")
|
||||
err = json.NewEncoder(w).Encode(artist)
|
||||
|
|
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 {
|
||||
|
|
|
@ -122,10 +122,7 @@ func UpdateTrack() http.Handler {
|
|||
|
||||
data.ID = trackID
|
||||
|
||||
if data.Title == "" {
|
||||
http.Error(w, "Track title cannot be blank\n", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
if data.Title == "" { data.Title = track.Title }
|
||||
|
||||
err = controller.UpdateTrackDB(global.DB, &data)
|
||||
if err != nil {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue