summaryrefslogtreecommitdiff
path: root/server/cmd
diff options
context:
space:
mode:
Diffstat (limited to 'server/cmd')
-rw-r--r--server/cmd/main.go21
1 files changed, 21 insertions, 0 deletions
diff --git a/server/cmd/main.go b/server/cmd/main.go
index ed4f748..3cd118d 100644
--- a/server/cmd/main.go
+++ b/server/cmd/main.go
@@ -35,11 +35,13 @@ func (h *guestHandler) getGuests(w http.ResponseWriter, _ *http.Request) {
guests, err := h.store.Get()
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
+ return
}
jsonBytes, err := json.Marshal(guests)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
+ return
}
w.WriteHeader(http.StatusOK)
@@ -55,6 +57,19 @@ func (h *guestHandler) createGuest(w http.ResponseWriter, r *http.Request) {
return
}
+ guests, err := h.store.Get()
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusBadRequest)
+ return
+ }
+
+ for _, g := range guests {
+ if g.Id == guest.Id {
+ http.Error(w, "Id already exists", http.StatusBadRequest)
+ return
+ }
+ }
+
err = h.store.Add(guest.Id, guest)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
@@ -68,6 +83,7 @@ func (h *guestHandler) updateGuest(w http.ResponseWriter, r *http.Request) {
matches := guestIdRe.FindStringSubmatch(r.URL.Path)
if len(matches) < 2 {
http.Error(w, "No id found", http.StatusBadRequest)
+ return
}
var guest guests.Guest
@@ -75,16 +91,19 @@ func (h *guestHandler) updateGuest(w http.ResponseWriter, r *http.Request) {
defer r.Body.Close()
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
+ return
}
id, err := strconv.Atoi(matches[1])
if err != nil {
http.Error(w, "Cannot convert string to integer", http.StatusBadRequest)
+ return
}
err = h.store.Update(id, guest)
if err != nil {
http.Error(w, "Guest not found", http.StatusBadRequest)
+ return
}
}
@@ -96,6 +115,8 @@ func (h *guestHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
h.createGuest(w, r)
case r.Method == http.MethodPut && guestIdRe.MatchString(r.URL.Path):
h.updateGuest(w, r)
+ default:
+ w.WriteHeader(http.StatusNotFound)
}
}