diff --git a/src/myaktion/handler/campaign.go b/src/myaktion/handler/campaign.go index 4e990050688f6d8048061761686e6a5ebb909671..d1246fe41921099ed00efdeb0bc9e832899ff303 100644 --- a/src/myaktion/handler/campaign.go +++ b/src/myaktion/handler/campaign.go @@ -38,7 +38,7 @@ func UpdateCampaign(w http.ResponseWriter, r *http.Request) { return } - error := service.UpdateCampaign(campaign, id) + error := service.UpdateCampaign(getOrganizerName(r), campaign, id) if error != nil { http.Error(w, error.Error(), http.StatusInternalServerError) return @@ -54,7 +54,7 @@ func GetCampaign(w http.ResponseWriter, r *http.Request) { return } - campaign, err := service.GetCampaign(id) + campaign, err := service.GetCampaign(getOrganizerName(r), id) if err != nil { log.Printf("Error calling service GetCampagin: %v", err) http.Error(w, err.Error(), http.StatusInternalServerError) @@ -83,7 +83,7 @@ func DeleteCampaign(w http.ResponseWriter, r *http.Request) { return } var campaign model.Campaign - err = service.DeleteCampaign(&campaign, id) + err = service.DeleteCampaign(getOrganizerName(r), &campaign, id) if err != nil { log.Printf("Error calling service DeleteCampaign: %v", err) @@ -147,17 +147,11 @@ func PatchCampaign(w http.ResponseWriter, r *http.Request) { return } - err = service.PatchCampaign2(campaign, id) - /*m := make(map[string]any) - err = json.NewDecoder(r.Body).Decode(&m) - if err != nil { - log.Errorf("Can't serialize request body to donation struct: %v", err) - } + err = service.PatchCampaign(getOrganizerName(r), campaign, id) - err = service.PatchCampaign(&m, id) if err != nil { - log.Errorf("cant patch stuff: %v", err) - }*/ + log.Errorf("Error calling service PatchCampaign: %v", err) + } } diff --git a/src/myaktion/main.go b/src/myaktion/main.go index be4edb3c2b31f85de2f7e51f554cfde74098f103..963bdfbc917bb59f6bbba29f69a0df4af53e8650 100644 --- a/src/myaktion/main.go +++ b/src/myaktion/main.go @@ -80,12 +80,15 @@ func main() { router.HandleFunc("/health", handler.Health).Methods("GET") router.HandleFunc("/campaigns", authMW(handler.CreateCampaign)).Methods("POST") - router.HandleFunc("/campaigns/{id}", handler.UpdateCampaign).Methods("PUT") + router.HandleFunc("/campaigns", authMW(handler.GetCampaigns)).Methods("GET") + router.HandleFunc("/campaigns/{id}", authMW(handler.GetCampaign)).Methods("GET") - router.HandleFunc("/campaigns", handler.GetCampaigns).Methods("GET") - router.HandleFunc("/campaigns/{id}", handler.DeleteCampaign).Methods("DELETE") - router.HandleFunc("/campaigns/{id}", handler.PatchCampaign).Methods("PATCH") + router.HandleFunc("/campaigns/{id}", authMW(handler.UpdateCampaign)).Methods("PUT") + router.HandleFunc("/campaigns/{id}", authMW(handler.PatchCampaign)).Methods("PATCH") + router.HandleFunc("/campaigns/{id}", authMW(handler.DeleteCampaign)).Methods("DELETE") + router.HandleFunc("/campaigns/{id}/donation", handler.AddDonation).Methods("POST") + if err := http.ListenAndServe(":8000", router); err != nil { log.Fatal(err) } diff --git a/src/myaktion/service/campaign.go b/src/myaktion/service/campaign.go index 8c0c9d6e12b69fef5cffd42135005db704fecf6f..1126cd295d65a19271098aca9c6a94d6ffa8ef91 100644 --- a/src/myaktion/service/campaign.go +++ b/src/myaktion/service/campaign.go @@ -30,10 +30,10 @@ func GetCampaigns(organizerName string) ([]model.Campaign, error) { return campaigns, nil } -func GetCampaign(id uint) (*model.Campaign, error) { +func GetCampaign(organizerName string, id uint) (*model.Campaign, error) { var campaign *model.Campaign - result := db.DB.First(&campaign, id) + result := db.DB.Where("id = ? AND organizer_name = ?", id, organizerName).First(&campaign) if result.Error != nil { return nil, result.Error @@ -42,17 +42,17 @@ func GetCampaign(id uint) (*model.Campaign, error) { return campaign, nil } -func UpdateCampaign(campaign *model.Campaign, id uint) error { - result := db.DB.Model(&campaign).Where("id = ?", id).Updates(campaign) +func UpdateCampaign(organizerName string, campaign *model.Campaign, id uint) error { + result := db.DB.Model(&campaign).Where("id = ? AND organizer_name = ?", id, organizerName).Updates(campaign) if result.Error != nil { return result.Error } return nil } -func DeleteCampaign(campaign *model.Campaign, id uint) error { +func DeleteCampaign(organizerName string, campaign *model.Campaign, id uint) error { - result := db.DB.Model(&campaign).Where("id = ?", id).Delete(campaign) + result := db.DB.Model(&campaign).Where("id = ? AND organizer_name = ?", id, organizerName).Delete(campaign) if result.Error != nil { return result.Error @@ -79,32 +79,9 @@ func AddDonation(donation *model.Donation, id uint) error { return nil } -func PatchCampaign(m *map[string]any, id uint) error { - - /*var newM = make(map[string]any) - for field, value := range *m{ - if (field == "Account"){ - newM = value - } - }*/ - result := db.DB.Model(model.Campaign{}).Where("id = ?", id).Updates(m) - /*for field, value := range *m { - result := db.DB.Model(model.Campaign{}).Where("id = ?", id).Select(field).Updates(map[string]interface{}{field: value}) - if result.Error != nil { - return result.Error - } - }*/ +func PatchCampaign(organizerName string, campaign *model.Campaign, id uint) error { - if result.Error != nil { - return result.Error - } - log.Infof("Successfully patched campaign.") - return nil -} - -func PatchCampaign2(campaign *model.Campaign, id uint) error { - - existingCampaign, error := GetCampaign(id) + existingCampaign, error := GetCampaign(organizerName, id) if error != nil { return error }