feat: read/write improved fields for users, read improved names/pronouns for users
This commit is contained in:
parent
7669595586
commit
c6537c920d
8 changed files with 87 additions and 127 deletions
|
@ -133,17 +133,25 @@ func (bot *Bot) userPronouns(w http.ResponseWriter, r *http.Request, ev *discord
|
|||
}
|
||||
|
||||
for _, field := range fields {
|
||||
if len(field.Favourite) == 0 {
|
||||
var favs []db.FieldEntry
|
||||
|
||||
for _, e := range field.Entries {
|
||||
if e.Status == db.StatusFavourite {
|
||||
favs = append(favs, e)
|
||||
}
|
||||
}
|
||||
|
||||
if len(favs) == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
var value string
|
||||
for _, fav := range field.Favourite {
|
||||
if len(value) > 500 {
|
||||
for _, fav := range favs {
|
||||
if len(fav.Value) > 500 {
|
||||
break
|
||||
}
|
||||
|
||||
value += fav + "\n"
|
||||
value += fav.Value + "\n"
|
||||
}
|
||||
|
||||
e.Fields = append(e.Fields, &discordgo.MessageEmbedField{
|
||||
|
|
|
@ -38,7 +38,7 @@ type PartialMember struct {
|
|||
AvatarURLs []string `json:"avatar_urls"`
|
||||
}
|
||||
|
||||
func dbUserToResponse(u db.User, fields []db.Field, names []db.Name, pronouns []db.Pronoun, members []db.Member) GetUserResponse {
|
||||
func dbUserToResponse(u db.User, fields []db.Field, members []db.Member) GetUserResponse {
|
||||
resp := GetUserResponse{
|
||||
ID: u.ID,
|
||||
Username: u.Username,
|
||||
|
@ -46,8 +46,8 @@ func dbUserToResponse(u db.User, fields []db.Field, names []db.Name, pronouns []
|
|||
Bio: u.Bio,
|
||||
AvatarURLs: u.AvatarURLs,
|
||||
Links: u.Links,
|
||||
Names: names,
|
||||
Pronouns: pronouns,
|
||||
Names: u.Names,
|
||||
Pronouns: u.Pronouns,
|
||||
Fields: fields,
|
||||
}
|
||||
|
||||
|
@ -78,25 +78,13 @@ func (s *Server) getUser(w http.ResponseWriter, r *http.Request) error {
|
|||
return err
|
||||
}
|
||||
|
||||
names, err := s.DB.UserNames(ctx, u.ID)
|
||||
if err != nil {
|
||||
log.Errorf("getting user names: %v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
pronouns, err := s.DB.UserPronouns(ctx, u.ID)
|
||||
if err != nil {
|
||||
log.Errorf("getting user pronouns: %v", 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, dbUserToResponse(u, fields, names, pronouns, members))
|
||||
render.JSON(w, r, dbUserToResponse(u, fields, members))
|
||||
return nil
|
||||
} else if err != db.ErrUserNotFound {
|
||||
log.Errorf("Error getting user by ID: %v", err)
|
||||
|
@ -116,18 +104,6 @@ func (s *Server) getUser(w http.ResponseWriter, r *http.Request) error {
|
|||
return err
|
||||
}
|
||||
|
||||
names, err := s.DB.UserNames(ctx, u.ID)
|
||||
if err != nil {
|
||||
log.Errorf("getting user names: %v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
pronouns, err := s.DB.UserPronouns(ctx, u.ID)
|
||||
if err != nil {
|
||||
log.Errorf("getting user pronouns: %v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
fields, err := s.DB.UserFields(ctx, u.ID)
|
||||
if err != nil {
|
||||
log.Errorf("Error getting user fields: %v", err)
|
||||
|
@ -140,7 +116,7 @@ func (s *Server) getUser(w http.ResponseWriter, r *http.Request) error {
|
|||
return err
|
||||
}
|
||||
|
||||
render.JSON(w, r, dbUserToResponse(u, fields, names, pronouns, members))
|
||||
render.JSON(w, r, dbUserToResponse(u, fields, members))
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -154,18 +130,6 @@ func (s *Server) getMeUser(w http.ResponseWriter, r *http.Request) error {
|
|||
return err
|
||||
}
|
||||
|
||||
names, err := s.DB.UserNames(ctx, u.ID)
|
||||
if err != nil {
|
||||
log.Errorf("getting user names: %v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
pronouns, err := s.DB.UserPronouns(ctx, u.ID)
|
||||
if err != nil {
|
||||
log.Errorf("getting user pronouns: %v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
fields, err := s.DB.UserFields(ctx, u.ID)
|
||||
if err != nil {
|
||||
log.Errorf("Error getting user fields: %v", err)
|
||||
|
@ -179,7 +143,7 @@ func (s *Server) getMeUser(w http.ResponseWriter, r *http.Request) error {
|
|||
}
|
||||
|
||||
render.JSON(w, r, GetMeResponse{
|
||||
GetUserResponse: dbUserToResponse(u, fields, names, pronouns, members),
|
||||
GetUserResponse: dbUserToResponse(u, fields, members),
|
||||
Discord: u.Discord,
|
||||
DiscordUsername: u.DiscordUsername,
|
||||
})
|
||||
|
|
|
@ -159,11 +159,7 @@ func (s *Server) patchUser(w http.ResponseWriter, r *http.Request) error {
|
|||
return err
|
||||
}
|
||||
|
||||
var (
|
||||
names []db.Name
|
||||
pronouns []db.Pronoun
|
||||
fields []db.Field
|
||||
)
|
||||
var fields []db.Field
|
||||
|
||||
if req.Names != nil {
|
||||
err = s.DB.SetUserNames(ctx, tx, claims.UserID, *req.Names)
|
||||
|
@ -171,13 +167,7 @@ func (s *Server) patchUser(w http.ResponseWriter, r *http.Request) error {
|
|||
log.Errorf("setting names for user %v: %v", claims.UserID, err)
|
||||
return err
|
||||
}
|
||||
names = *req.Names
|
||||
} else {
|
||||
names, err = s.DB.UserNames(ctx, claims.UserID)
|
||||
if err != nil {
|
||||
log.Errorf("getting names for user %v: %v", claims.UserID, err)
|
||||
return err
|
||||
}
|
||||
u.Names = *req.Names
|
||||
}
|
||||
|
||||
if req.Pronouns != nil {
|
||||
|
@ -186,13 +176,7 @@ func (s *Server) patchUser(w http.ResponseWriter, r *http.Request) error {
|
|||
log.Errorf("setting pronouns for user %v: %v", claims.UserID, err)
|
||||
return err
|
||||
}
|
||||
pronouns = *req.Pronouns
|
||||
} else {
|
||||
pronouns, err = s.DB.UserPronouns(ctx, claims.UserID)
|
||||
if err != nil {
|
||||
log.Errorf("getting fields for user %v: %v", claims.UserID, err)
|
||||
return err
|
||||
}
|
||||
u.Pronouns = *req.Pronouns
|
||||
}
|
||||
|
||||
if req.Fields != nil {
|
||||
|
@ -217,7 +201,7 @@ func (s *Server) patchUser(w http.ResponseWriter, r *http.Request) error {
|
|||
}
|
||||
|
||||
// echo the updated user back on success
|
||||
render.JSON(w, r, dbUserToResponse(u, fields, names, pronouns, nil))
|
||||
render.JSON(w, r, dbUserToResponse(u, fields, nil))
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue