fix(backend): return members in /users/{userRef}
This commit is contained in:
parent
37c01753c9
commit
8ab4c2a91b
|
@ -32,13 +32,14 @@ type GetMeResponse struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type PartialMember struct {
|
type PartialMember struct {
|
||||||
ID xid.ID `json:"id"`
|
ID xid.ID `json:"id"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
AvatarURL *string `json:"avatar_url"`
|
DisplayName *string `json:"display_name"`
|
||||||
|
AvatarURLs []string `json:"avatar_urls"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func dbUserToResponse(u db.User, fields []db.Field, names []db.Name, pronouns []db.Pronoun) GetUserResponse {
|
func dbUserToResponse(u db.User, fields []db.Field, names []db.Name, pronouns []db.Pronoun, members []db.Member) GetUserResponse {
|
||||||
return GetUserResponse{
|
resp := GetUserResponse{
|
||||||
ID: u.ID,
|
ID: u.ID,
|
||||||
Username: u.Username,
|
Username: u.Username,
|
||||||
DisplayName: u.DisplayName,
|
DisplayName: u.DisplayName,
|
||||||
|
@ -49,6 +50,18 @@ func dbUserToResponse(u db.User, fields []db.Field, names []db.Name, pronouns []
|
||||||
Pronouns: pronouns,
|
Pronouns: pronouns,
|
||||||
Fields: fields,
|
Fields: fields,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resp.Members = make([]PartialMember, len(members))
|
||||||
|
for i := range members {
|
||||||
|
resp.Members[i] = PartialMember{
|
||||||
|
ID: members[i].ID,
|
||||||
|
Name: members[i].Name,
|
||||||
|
DisplayName: members[i].DisplayName,
|
||||||
|
AvatarURLs: members[i].AvatarURLs,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return resp
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) getUser(w http.ResponseWriter, r *http.Request) error {
|
func (s *Server) getUser(w http.ResponseWriter, r *http.Request) error {
|
||||||
|
@ -77,7 +90,13 @@ func (s *Server) getUser(w http.ResponseWriter, r *http.Request) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
render.JSON(w, r, dbUserToResponse(u, fields, names, pronouns))
|
members, err := s.DB.UserMembers(ctx, u.ID)
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("Error getting user members: %v", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
render.JSON(w, r, dbUserToResponse(u, fields, names, pronouns, members))
|
||||||
return nil
|
return nil
|
||||||
} else if err != db.ErrUserNotFound {
|
} else if err != db.ErrUserNotFound {
|
||||||
log.Errorf("Error getting user by ID: %v", err)
|
log.Errorf("Error getting user by ID: %v", err)
|
||||||
|
@ -115,7 +134,13 @@ func (s *Server) getUser(w http.ResponseWriter, r *http.Request) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
render.JSON(w, r, dbUserToResponse(u, fields, names, pronouns))
|
members, err := s.DB.UserMembers(ctx, u.ID)
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("Error getting user members: %v", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
render.JSON(w, r, dbUserToResponse(u, fields, names, pronouns, members))
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,8 +172,14 @@ func (s *Server) getMeUser(w http.ResponseWriter, r *http.Request) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
members, err := s.DB.UserMembers(ctx, u.ID)
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("Error getting user members: %v", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
render.JSON(w, r, GetMeResponse{
|
render.JSON(w, r, GetMeResponse{
|
||||||
GetUserResponse: dbUserToResponse(u, fields, names, pronouns),
|
GetUserResponse: dbUserToResponse(u, fields, names, pronouns, members),
|
||||||
Discord: u.Discord,
|
Discord: u.Discord,
|
||||||
DiscordUsername: u.DiscordUsername,
|
DiscordUsername: u.DiscordUsername,
|
||||||
})
|
})
|
||||||
|
|
|
@ -194,7 +194,7 @@ func (s *Server) patchUser(w http.ResponseWriter, r *http.Request) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// echo the updated user back on success
|
// echo the updated user back on success
|
||||||
render.JSON(w, r, dbUserToResponse(u, fields, names, pronouns))
|
render.JSON(w, r, dbUserToResponse(u, fields, names, pronouns, nil))
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue