From 8dae5960e71816b6cbdb7b5a69cf0e2033e36c05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leandro=20Ant=C3=B4nio=20Farias=20Machado?= Date: Sat, 17 Jun 2023 14:13:06 -0300 Subject: [PATCH] feat(api): retrieve all users --- .../services/controller/internal/api/api.go | 23 +++++++++++++++++-- .../services/controller/internal/db/user.go | 12 ++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/backend/services/controller/internal/api/api.go b/backend/services/controller/internal/api/api.go index 7c30a14..4805b99 100644 --- a/backend/services/controller/internal/api/api.go +++ b/backend/services/controller/internal/api/api.go @@ -56,14 +56,19 @@ func StartApi(a Api) { iot.HandleFunc("/{sn}/del", a.deviceDeleteMsg).Methods("PUT") iot.HandleFunc("/{sn}/set", a.deviceUpdateMsg).Methods("PUT") iot.HandleFunc("/{sn}/parameters", a.deviceGetSupportedParametersMsg).Methods("PUT") - //TODO: Create operation action handler - iot.HandleFunc("/device/{sn}/act", a.deviceUpdateMsg).Methods("PUT") // Middleware for requests which requires user to be authenticated iot.Use(func(handler http.Handler) http.Handler { return middleware.Middleware(handler) }) + users := r.PathPrefix("/api/users").Subrouter() + users.HandleFunc("", a.retrieveUsers).Methods("GET") + + users.Use(func(handler http.Handler) http.Handler { + return middleware.Middleware(handler) + }) + // Verifies CORS configs for requests corsOpts := cors.GetCorsConfig() @@ -100,6 +105,20 @@ func (a *Api) retrieveDevices(w http.ResponseWriter, r *http.Request) { return } +func (a *Api) retrieveUsers(w http.ResponseWriter, r *http.Request) { + devices, err := a.Db.FindAllUsers() + if err != nil { + log.Println(err) + w.WriteHeader(http.StatusInternalServerError) + return + } + err = json.NewEncoder(w).Encode(devices) + if err != nil { + log.Println(err) + } + return +} + func (a *Api) deviceGetSupportedParametersMsg(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) sn := vars["sn"] diff --git a/backend/services/controller/internal/db/user.go b/backend/services/controller/internal/db/user.go index 6cfc563..fb49ce0 100644 --- a/backend/services/controller/internal/db/user.go +++ b/backend/services/controller/internal/db/user.go @@ -26,6 +26,18 @@ func (d *Database) RegisterUser(user User) error { return err } +func (d *Database) FindAllUsers() ([]User, error) { + var result []User + cursor, err := d.users.Find(d.ctx, bson.D{{}}) + if err != nil { + return []User{}, err + } + if err = cursor.All(d.ctx, &result); err != nil { + log.Fatal(err) + } + return result, err +} + func (d *Database) FindUser(email string) (User, error) { var result User err := d.users.FindOne(d.ctx, bson.D{{"email", email}}).Decode(&result)