From 9dd5bf7fc3c58c76ae320ef0b139e6c3e10b06fa Mon Sep 17 00:00:00 2001 From: Jareth Gomes Date: Wed, 9 Feb 2022 23:34:49 -0600 Subject: [PATCH 1/7] Changed PUT /event/code/{id}/ to POST and changed behavior to upsert from update --- .../docs/reference/services/Event.md | 5 +-- gateway/services/event.go | 6 ++-- services/event/controller/controller.go | 34 +++++++++---------- services/event/service/event_service.go | 7 ++-- 4 files changed, 27 insertions(+), 25 deletions(-) diff --git a/documentation/docs/reference/services/Event.md b/documentation/docs/reference/services/Event.md index 99aac9bf..b729b5f5 100644 --- a/documentation/docs/reference/services/Event.md +++ b/documentation/docs/reference/services/Event.md @@ -380,14 +380,15 @@ Response format: ``` -PUT /event/code/{id}/ +POST /event/code/ ---------------------------- -Updates a struct that contains information about the event code (generated upon event creation) and expiration time. +Upserts a struct that contains information about the event code (generated upon event creation) and expiration time. Request format: ``` { + "id": "52fdfc072182654f163f5f0f9a621d72", "code": "new_code", "expiration": 1521388800 } diff --git a/gateway/services/event.go b/gateway/services/event.go index 8b2317b6..e1e72908 100644 --- a/gateway/services/event.go +++ b/gateway/services/event.go @@ -93,8 +93,8 @@ var EventRoutes = arbor.RouteCollection{ }, arbor.Route{ "UpdateEventCode", - "PUT", - "/event/code/{id}/", + "POST", + "/event/code/", alice.New(middleware.AuthMiddleware([]models.Role{models.AdminRole, models.StaffRole}), middleware.IdentificationMiddleware).ThenFunc(PutEventCode).ServeHTTP, }, arbor.Route{ @@ -122,7 +122,7 @@ func CreateEvent(w http.ResponseWriter, r *http.Request) { } func UpdateEvent(w http.ResponseWriter, r *http.Request) { - arbor.PUT(w, config.EVENT_SERVICE+r.URL.String(), EventFormat, "", r) + arbor.POST(w, config.EVENT_SERVICE+r.URL.String(), EventFormat, "", r) } func GetEventCode(w http.ResponseWriter, r *http.Request) { diff --git a/services/event/controller/controller.go b/services/event/controller/controller.go index cc853966..883624b9 100644 --- a/services/event/controller/controller.go +++ b/services/event/controller/controller.go @@ -23,6 +23,15 @@ func SetupController(route *mux.Route) { metrics.RegisterHandler("/favorite/", AddEventFavorite, "POST", router) metrics.RegisterHandler("/favorite/", RemoveEventFavorite, "DELETE", router) + router.HandleFunc("/filter/", GetFilteredEvents).Methods("GET") + router.HandleFunc("/{id}/", GetEvent).Methods("GET") + router.HandleFunc("/{id}/", DeleteEvent).Methods("DELETE") + router.HandleFunc("/", CreateEvent).Methods("POST") + router.HandleFunc("/", UpdateEvent).Methods("PUT") + router.HandleFunc("/", GetAllEvents).Methods("GET") + router.HandleFunc("/code/{id}/", GetEventCode).Methods("GET") + router.HandleFunc("/code/", UpsertEventCode).Methods("POST") + metrics.RegisterHandler("/filter/", GetFilteredEvents, "GET", router) metrics.RegisterHandler("/{id}/", GetEvent, "GET", router) metrics.RegisterHandler("/{id}/", DeleteEvent, "DELETE", router) @@ -30,7 +39,7 @@ func SetupController(route *mux.Route) { metrics.RegisterHandler("/", UpdateEvent, "PUT", router) metrics.RegisterHandler("/", GetAllEvents, "GET", router) metrics.RegisterHandler("/code/{id}/", GetEventCode, "GET", router) - metrics.RegisterHandler("/code/{id}/", UpdateEventCode, "PUT", router) + metrics.RegisterHandler("/code/{id}/", UpsertEventCode, "PUT", router) metrics.RegisterHandler("/checkin/", Checkin, "POST", router) @@ -166,47 +175,38 @@ func GetEventCode(w http.ResponseWriter, r *http.Request) { return } - code, err := service.GetEventCode(id) + codes, err := service.GetEventCode(id) if err != nil { errors.WriteError(w, r, errors.DatabaseError(err.Error(), "Failed to receive event code information from database")) return } - json.NewEncoder(w).Encode(code) + json.NewEncoder(w).Encode(codes) } /* - Endpoint to update an event code and end time + Endpoint to upsert an event code and end time */ -func UpdateEventCode(w http.ResponseWriter, r *http.Request) { - id := mux.Vars(r)["id"] - - if id == "" { - errors.WriteError(w, r, errors.MalformedRequestError("Must provide event id in request url.", "Must provide event id in request url.")) - return - } - +func UpsertEventCode(w http.ResponseWriter, r *http.Request) { var eventCode models.EventCode json.NewDecoder(r.Body).Decode(&eventCode) - eventCode.ID = id - - err := service.UpdateEventCode(id, eventCode) + err := service.UpsertEventCode(eventCode.Code, eventCode) if err != nil { errors.WriteError(w, r, errors.DatabaseError(err.Error(), "Could not update the code and timestamp of the event.")) return } - updated_event, err := service.GetEventCode(id) + updated_codes, err := service.GetEventCode(eventCode.ID) if err != nil { errors.WriteError(w, r, errors.DatabaseError(err.Error(), "Could not get updated event code and timestamp details.")) return } - json.NewEncoder(w).Encode(updated_event) + json.NewEncoder(w).Encode(updated_codes) } /* diff --git a/services/event/service/event_service.go b/services/event/service/event_service.go index 0c6b4392..3b58a8be 100644 --- a/services/event/service/event_service.go +++ b/services/event/service/event_service.go @@ -515,14 +515,15 @@ func GetEventCode(id string) (*models.EventCode, error) { } /* - Updates the event code and end time with the given id + Upserts the event code and end time with the given id + If no matching code is not found, then it is a new code and add it */ -func UpdateEventCode(id string, eventCode models.EventCode) error { +func UpsertEventCode(id string, eventCode models.EventCode) error { selector := database.QuerySelector{ "id": id, } - err := db.Update("eventcodes", selector, &eventCode) + _, err := db.Upsert("eventcodes", selector, &eventCode) return err } From 5d14095837568c11452f49904d83617f003943bf Mon Sep 17 00:00:00 2001 From: Jareth Gomes Date: Wed, 9 Feb 2022 23:37:22 -0600 Subject: [PATCH 2/7] Removed duplicate routes from conflict resolve --- services/event/controller/controller.go | 9 --------- 1 file changed, 9 deletions(-) diff --git a/services/event/controller/controller.go b/services/event/controller/controller.go index 883624b9..10cd92bc 100644 --- a/services/event/controller/controller.go +++ b/services/event/controller/controller.go @@ -32,15 +32,6 @@ func SetupController(route *mux.Route) { router.HandleFunc("/code/{id}/", GetEventCode).Methods("GET") router.HandleFunc("/code/", UpsertEventCode).Methods("POST") - metrics.RegisterHandler("/filter/", GetFilteredEvents, "GET", router) - metrics.RegisterHandler("/{id}/", GetEvent, "GET", router) - metrics.RegisterHandler("/{id}/", DeleteEvent, "DELETE", router) - metrics.RegisterHandler("/", CreateEvent, "POST", router) - metrics.RegisterHandler("/", UpdateEvent, "PUT", router) - metrics.RegisterHandler("/", GetAllEvents, "GET", router) - metrics.RegisterHandler("/code/{id}/", GetEventCode, "GET", router) - metrics.RegisterHandler("/code/{id}/", UpsertEventCode, "PUT", router) - metrics.RegisterHandler("/checkin/", Checkin, "POST", router) metrics.RegisterHandler("/track/", MarkUserAsAttendingEvent, "POST", router) From 79166ac7e25352bd39744529bead7db479a27180 Mon Sep 17 00:00:00 2001 From: Jareth Gomes Date: Thu, 10 Feb 2022 00:02:24 -0600 Subject: [PATCH 3/7] Revert "Removed duplicate routes from conflict resolve" This reverts commit 5d14095837568c11452f49904d83617f003943bf. --- services/event/controller/controller.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/services/event/controller/controller.go b/services/event/controller/controller.go index 10cd92bc..883624b9 100644 --- a/services/event/controller/controller.go +++ b/services/event/controller/controller.go @@ -32,6 +32,15 @@ func SetupController(route *mux.Route) { router.HandleFunc("/code/{id}/", GetEventCode).Methods("GET") router.HandleFunc("/code/", UpsertEventCode).Methods("POST") + metrics.RegisterHandler("/filter/", GetFilteredEvents, "GET", router) + metrics.RegisterHandler("/{id}/", GetEvent, "GET", router) + metrics.RegisterHandler("/{id}/", DeleteEvent, "DELETE", router) + metrics.RegisterHandler("/", CreateEvent, "POST", router) + metrics.RegisterHandler("/", UpdateEvent, "PUT", router) + metrics.RegisterHandler("/", GetAllEvents, "GET", router) + metrics.RegisterHandler("/code/{id}/", GetEventCode, "GET", router) + metrics.RegisterHandler("/code/{id}/", UpsertEventCode, "PUT", router) + metrics.RegisterHandler("/checkin/", Checkin, "POST", router) metrics.RegisterHandler("/track/", MarkUserAsAttendingEvent, "POST", router) From 92bcd6eda2e4b5f4e19183884fa951bd632dbf58 Mon Sep 17 00:00:00 2001 From: Jareth Gomes Date: Thu, 10 Feb 2022 00:05:47 -0600 Subject: [PATCH 4/7] Removed actual old deplicate routes --- services/event/controller/controller.go | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/services/event/controller/controller.go b/services/event/controller/controller.go index 883624b9..16d8e979 100644 --- a/services/event/controller/controller.go +++ b/services/event/controller/controller.go @@ -23,15 +23,6 @@ func SetupController(route *mux.Route) { metrics.RegisterHandler("/favorite/", AddEventFavorite, "POST", router) metrics.RegisterHandler("/favorite/", RemoveEventFavorite, "DELETE", router) - router.HandleFunc("/filter/", GetFilteredEvents).Methods("GET") - router.HandleFunc("/{id}/", GetEvent).Methods("GET") - router.HandleFunc("/{id}/", DeleteEvent).Methods("DELETE") - router.HandleFunc("/", CreateEvent).Methods("POST") - router.HandleFunc("/", UpdateEvent).Methods("PUT") - router.HandleFunc("/", GetAllEvents).Methods("GET") - router.HandleFunc("/code/{id}/", GetEventCode).Methods("GET") - router.HandleFunc("/code/", UpsertEventCode).Methods("POST") - metrics.RegisterHandler("/filter/", GetFilteredEvents, "GET", router) metrics.RegisterHandler("/{id}/", GetEvent, "GET", router) metrics.RegisterHandler("/{id}/", DeleteEvent, "DELETE", router) @@ -39,7 +30,7 @@ func SetupController(route *mux.Route) { metrics.RegisterHandler("/", UpdateEvent, "PUT", router) metrics.RegisterHandler("/", GetAllEvents, "GET", router) metrics.RegisterHandler("/code/{id}/", GetEventCode, "GET", router) - metrics.RegisterHandler("/code/{id}/", UpsertEventCode, "PUT", router) + metrics.RegisterHandler("/code/", UpsertEventCode, "POST", router) metrics.RegisterHandler("/checkin/", Checkin, "POST", router) From 880c9e8b17cbab57b9ef1adb892a3ebbb320ba6c Mon Sep 17 00:00:00 2001 From: Jareth Gomes Date: Thu, 10 Feb 2022 00:22:05 -0600 Subject: [PATCH 5/7] Fixed route type for /event/ and /event/code/ --- gateway/services/event.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gateway/services/event.go b/gateway/services/event.go index e1e72908..a5528660 100644 --- a/gateway/services/event.go +++ b/gateway/services/event.go @@ -92,10 +92,10 @@ var EventRoutes = arbor.RouteCollection{ alice.New(middleware.AuthMiddleware([]models.Role{models.AdminRole, models.StaffRole}), middleware.IdentificationMiddleware).ThenFunc(GetEventCode).ServeHTTP, }, arbor.Route{ - "UpdateEventCode", + "UpsertEventCode", "POST", "/event/code/", - alice.New(middleware.AuthMiddleware([]models.Role{models.AdminRole, models.StaffRole}), middleware.IdentificationMiddleware).ThenFunc(PutEventCode).ServeHTTP, + alice.New(middleware.AuthMiddleware([]models.Role{models.AdminRole, models.StaffRole}), middleware.IdentificationMiddleware).ThenFunc(PostEventCode).ServeHTTP, }, arbor.Route{ "Checkin", @@ -122,15 +122,15 @@ func CreateEvent(w http.ResponseWriter, r *http.Request) { } func UpdateEvent(w http.ResponseWriter, r *http.Request) { - arbor.POST(w, config.EVENT_SERVICE+r.URL.String(), EventFormat, "", r) + arbor.PUT(w, config.EVENT_SERVICE+r.URL.String(), EventFormat, "", r) } func GetEventCode(w http.ResponseWriter, r *http.Request) { arbor.GET(w, config.EVENT_SERVICE+r.URL.String(), EventFormat, "", r) } -func PutEventCode(w http.ResponseWriter, r *http.Request) { - arbor.PUT(w, config.EVENT_SERVICE+r.URL.String(), EventFormat, "", r) +func PostEventCode(w http.ResponseWriter, r *http.Request) { + arbor.POST(w, config.EVENT_SERVICE+r.URL.String(), EventFormat, "", r) } func Checkin(w http.ResponseWriter, r *http.Request) { From c5fcd43d8cbfbab3893a2834f448d9ef4ca2031e Mon Sep 17 00:00:00 2001 From: Jareth Gomes Date: Thu, 10 Feb 2022 00:26:01 -0600 Subject: [PATCH 6/7] Fixed plurality --- services/event/controller/controller.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/event/controller/controller.go b/services/event/controller/controller.go index 16d8e979..89ec6bdb 100644 --- a/services/event/controller/controller.go +++ b/services/event/controller/controller.go @@ -190,14 +190,14 @@ func UpsertEventCode(w http.ResponseWriter, r *http.Request) { return } - updated_codes, err := service.GetEventCode(eventCode.ID) + updated_code, err := service.GetEventCode(eventCode.ID) if err != nil { errors.WriteError(w, r, errors.DatabaseError(err.Error(), "Could not get updated event code and timestamp details.")) return } - json.NewEncoder(w).Encode(updated_codes) + json.NewEncoder(w).Encode(updated_code) } /* From 2705f47979f31c2b69b5562d97884bf01af57a66 Mon Sep 17 00:00:00 2001 From: Jareth Gomes Date: Thu, 10 Feb 2022 00:27:07 -0600 Subject: [PATCH 7/7] Fixed more plurality in variables --- services/event/controller/controller.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/event/controller/controller.go b/services/event/controller/controller.go index 89ec6bdb..43650248 100644 --- a/services/event/controller/controller.go +++ b/services/event/controller/controller.go @@ -166,14 +166,14 @@ func GetEventCode(w http.ResponseWriter, r *http.Request) { return } - codes, err := service.GetEventCode(id) + code, err := service.GetEventCode(id) if err != nil { errors.WriteError(w, r, errors.DatabaseError(err.Error(), "Failed to receive event code information from database")) return } - json.NewEncoder(w).Encode(codes) + json.NewEncoder(w).Encode(code) } /*