Skip to content
Snippets Groups Projects
Commit 1aa6a38f authored by Martin Schmollinger's avatar Martin Schmollinger
Browse files

Added Create new Campaign Resource

parent 7d7aeadf
No related branches found
No related tags found
No related merge requests found
package handler
import (
"encoding/json"
"log"
"net/http"
"gitlab.reutlingen-university.de/go-exercises/myaktion-go-ss25/src/myaktion/model"
"gitlab.reutlingen-university.de/go-exercises/myaktion-go-ss25/src/myaktion/service"
)
func CreateCampaign(w http.ResponseWriter, r *http.Request) {
var campaign model.Campaign
err := json.NewDecoder(r.Body).Decode(&campaign)
if err != nil {
log.Printf("Can't serialize request body to campaign struct: %v", err)
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
if err := service.CreateCampaign(&campaign); err != nil {
log.Printf("Error calling service CreateCampaign: %v", err)
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
w.Header().Set("Content-Type", "application/json")
if err := json.NewEncoder(w).Encode(campaign); err != nil {
log.Printf("Failure encoding value to JSON: %v", err)
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
...@@ -13,6 +13,7 @@ func main() { ...@@ -13,6 +13,7 @@ func main() {
log.Println("Starting My-Aktion API server") log.Println("Starting My-Aktion API server")
router := mux.NewRouter() router := mux.NewRouter()
router.HandleFunc("/health", handler.Health).Methods("GET") router.HandleFunc("/health", handler.Health).Methods("GET")
router.HandleFunc("/campaigns", handler.CreateCampaign).Methods("POST")
if err := http.ListenAndServe(":8000", router); err != nil { if err := http.ListenAndServe(":8000", router); err != nil {
log.Fatal(err) log.Fatal(err)
} }
......
package model package model
type Campaign struct { type Campaign struct {
ID uint
Name string Name string
OrganizerName string OrganizerName string
TargetAmount float64 TargetAmount float64
......
package service
import (
"log"
"gitlab.reutlingen-university.de/go-exercises/myaktion-go-ss25/src/myaktion/model"
)
var (
campaignStore map[uint]*model.Campaign
actCampaignId uint = 1
)
func init() {
campaignStore = make(map[uint]*model.Campaign)
}
func CreateCampaign(campaign *model.Campaign) error {
campaign.ID = actCampaignId
campaignStore[actCampaignId] = campaign
actCampaignId += 1
log.Printf("Successfully stored new campaign with ID %v in database.", campaign.ID)
log.Printf("Stored: %v", campaign)
return nil
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment