feat(api): retrieve all users

This commit is contained in:
Leandro Antônio Farias Machado 2023-06-17 14:13:06 -03:00
parent d4b6e6775a
commit 8dae5960e7
2 changed files with 33 additions and 2 deletions

View File

@ -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"]

View File

@ -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)