list all users method
This commit is contained in:
@@ -48,6 +48,7 @@ func Start() {
|
||||
})
|
||||
|
||||
r.Route("/users", func(r chi.Router) {
|
||||
r.Get("/", ListUsers)
|
||||
r.Route("/{userID}", func(r chi.Router) {
|
||||
r.Use(UserCtx) // Load user
|
||||
r.Get("/", GetUser)
|
||||
|
21
api/db.go
21
api/db.go
@@ -27,6 +27,27 @@ func dbGetUser(id string) (*User, error) {
|
||||
return nil, errors.New("User not found")
|
||||
}
|
||||
|
||||
func dbGetAllUsers() ([]*User, error) {
|
||||
data := db.ExecDB("users")
|
||||
if data == nil {
|
||||
return nil, errors.New("failed to load users database")
|
||||
}
|
||||
|
||||
users := data["users"].([]interface{})
|
||||
var result []*User
|
||||
for _, u := range users {
|
||||
user := u.(map[string]interface{})
|
||||
result = append(result, &User{
|
||||
ID: user["ID"].(string),
|
||||
Name: user["Name"].(string),
|
||||
})
|
||||
}
|
||||
if len(result) == 0 {
|
||||
return nil, errors.New("no users found")
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func dbGetMessage(id string) (*Message, error) {
|
||||
data := db.ExecDB("messages")
|
||||
if data == nil {
|
||||
|
@@ -30,6 +30,14 @@ func NewMessageListResponse(messages []*Message) []render.Renderer {
|
||||
return list
|
||||
}
|
||||
|
||||
func NewUserListResponse(users []*User) []render.Renderer {
|
||||
list := []render.Renderer{}
|
||||
for _, user := range users {
|
||||
list = append(list, NewUserPayloadResponse(user))
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
func NewUserPayloadResponse(user *User) *UserPayload {
|
||||
return &UserPayload{User: user}
|
||||
}
|
||||
|
12
api/user.go
12
api/user.go
@@ -43,6 +43,18 @@ func GetUser(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
}
|
||||
|
||||
func ListUsers(w http.ResponseWriter, r *http.Request) {
|
||||
dbUsers, err := dbGetAllUsers()
|
||||
if err != nil {
|
||||
render.Render(w, r, ErrRender(err))
|
||||
return
|
||||
}
|
||||
if err := render.RenderList(w, r, NewUserListResponse(dbUsers)); err != nil {
|
||||
render.Render(w, r, ErrRender(err))
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func newUserID() string {
|
||||
return "user_" + uuid.New().String()
|
||||
}
|
||||
|
Reference in New Issue
Block a user