From f48c3bd323cae6cb9bfa9cbbd56c6dc8630d1b9f Mon Sep 17 00:00:00 2001 From: marcel-dempers Date: Wed, 20 Oct 2021 13:44:27 +1100 Subject: [PATCH] improvements --- .../part-5.database.redis/videos/main.go | 40 ++++++++++++++++++- .../part-5.database.redis/videos/videos.go | 8 ++-- 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/golang/introduction/part-5.database.redis/videos/main.go b/golang/introduction/part-5.database.redis/videos/main.go index 4fe4b4f..679b575 100644 --- a/golang/introduction/part-5.database.redis/videos/main.go +++ b/golang/introduction/part-5.database.redis/videos/main.go @@ -39,7 +39,29 @@ func main() { func HandleGetVideos(w http.ResponseWriter, r *http.Request){ - redisClient.Ping(ctx) + id, ok := r.URL.Query()["id"] + + if ok { + + videoID := id[0] + video := getVideo(videoID) + + if video.Id == "" { //video not found, or empty ID + w.WriteHeader(http.StatusNotFound) + w.Write([]byte("{}")) + return + } + + videoBytes, err := json.Marshal(video) + if err != nil { + panic(err) + } + + w.Write(videoBytes) + return + + } + videos := getVideos() videoBytes, err := json.Marshal(videos) @@ -59,6 +81,21 @@ func HandleUpdateVideos(w http.ResponseWriter, r *http.Request){ panic(err) } + _, ok := r.URL.Query()["id"] + if ok { + + var video video + err = json.Unmarshal(body, &video) + if err != nil { + w.WriteHeader(400) + fmt.Fprintf(w, "Bad request") + } + + saveVideo(video) + return + + } + var videos []video err = json.Unmarshal(body, &videos) if err != nil { @@ -67,6 +104,7 @@ func HandleUpdateVideos(w http.ResponseWriter, r *http.Request){ } saveVideos(videos) + return } else { w.WriteHeader(405) diff --git a/golang/introduction/part-5.database.redis/videos/videos.go b/golang/introduction/part-5.database.redis/videos/videos.go index 0b149f5..2f11465 100644 --- a/golang/introduction/part-5.database.redis/videos/videos.go +++ b/golang/introduction/part-5.database.redis/videos/videos.go @@ -33,13 +33,15 @@ func getVideo(id string)(video video) { value, err := redisClient.Get(ctx, id).Result() + if err == redis.Nil { + return video + } + if err != nil { panic(err) } - if err != redis.Nil { - err = json.Unmarshal([]byte(value), &video) - } + json.Unmarshal([]byte(value), &video) return video }