From 7fb25a32025b3c1cb1cf252499bb8e5ae4eff5b8 Mon Sep 17 00:00:00 2001 From: Flnal <74874325+Flnal@users.noreply.github.com> Date: Sat, 29 Apr 2023 17:43:02 +0200 Subject: [PATCH] added GetCampagin2 (for special IDs) --- main/main.go | 1 + src/myaktion/handler/campaign.go | 18 ++++++++++++++++++ src/myaktion/service/campaign.go | 15 +++++++++++++++ 3 files changed, 34 insertions(+) diff --git a/main/main.go b/main/main.go index 7057e32..11db3bb 100644 --- a/main/main.go +++ b/main/main.go @@ -31,6 +31,7 @@ func main() { router.HandleFunc("/health", handler.Health).Methods("GET") router.HandleFunc("/campaign", handler.CreateCampaign).Methods("POST") router.HandleFunc("/campaigns", handler.GetCampaigns).Methods("GET") + router.HandleFunc("/campaign/{id}", handler.GetCampaign2).Methods("GET") if err := http.ListenAndServe(":8000", router); err != nil { log.Fatal(err) } diff --git a/src/myaktion/handler/campaign.go b/src/myaktion/handler/campaign.go index 9eb9f9e..3315e49 100644 --- a/src/myaktion/handler/campaign.go +++ b/src/myaktion/handler/campaign.go @@ -44,3 +44,21 @@ func GetCampaign(r *http.Request) (*model.Campaign, error) { } return &campaign, nil } + +func GetCampaign2(w http.ResponseWriter, r *http.Request) { + id, idErr := getId(r) + if idErr != nil { + log.Errorf("Error calling service getId: %v", idErr) + http.Error(w, idErr.Error(), http.StatusInternalServerError) + return + } + + resCampaign, err := service.GetCampaign2(id) + if err != nil { + log.Errorf("Error calling service GetCampaign: %v", err) + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + log.Infof("Campaign with the ID %v was printed", resCampaign.ID) + sendJson(w, resCampaign) +} diff --git a/src/myaktion/service/campaign.go b/src/myaktion/service/campaign.go index 7963eb6..61eb1f6 100644 --- a/src/myaktion/service/campaign.go +++ b/src/myaktion/service/campaign.go @@ -1,6 +1,8 @@ package service import ( + "errors" + log "github.com/sirupsen/logrus" "gitlab.reutlingen-university.de/albrecht/myaktion-go/src/myaktion/model" @@ -32,3 +34,16 @@ func GetCampaigns() ([]model.Campaign, error) { log.Tracef("Retrieved: %v", campaigns) return campaigns, nil } + +func GetCampaign2(requestedID uint) (model.Campaign, error) { + var resCampaign model.Campaign + for _, campaign := range campaignStore { + if campaign.ID == requestedID { + resCampaign = *campaign + log.Tracef("Retrieved: %v", resCampaign) + + return resCampaign, nil + } + } + return resCampaign, errors.New("keine Campaign mit der ID wurde gefunden") +} -- GitLab