diff --git a/main.go b/main.go index 7c546d3..758680d 100644 --- a/main.go +++ b/main.go @@ -11,6 +11,7 @@ import ( "net/http" "runtime/debug" "strconv" + "sync" "time" "git.chandlerswift.com/chandlerswift/nau-sidewalks/sidewalk" @@ -42,6 +43,7 @@ func main() { // Decode the JSON data var sidewalks []sidewalk.Sidewalk + var sidewalksMutex sync.RWMutex if err := json.Unmarshal(sidewalk_data, &sidewalks); err != nil { log.Fatalf("Error decoding JSON: %v", err) } @@ -58,7 +60,9 @@ func main() { http.HandleFunc("GET /api/sidewalks", func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") + sidewalksMutex.RLock() json.NewEncoder(w).Encode(sidewalks) + sidewalksMutex.RUnlock() }) http.HandleFunc("POST /api/sidewalks/{id}", func(w http.ResponseWriter, r *http.Request) { @@ -75,8 +79,10 @@ func main() { if err != nil { http.Error(w, "Invalid condition", http.StatusBadRequest) } + sidewalksMutex.Lock() sidewalks[sidewalkID].Condition = sidewalk.Condition(condition) sidewalks[sidewalkID].LastUpdated = time.Now() + sidewalksMutex.Unlock() http.Redirect(w, r, "/", http.StatusSeeOther) })