feat: read/write improved names/pronouns for users, read/write improved fields/names/pronouns for members

This commit is contained in:
Sam 2023-01-31 00:50:17 +01:00
parent c6537c920d
commit d6017f1edf
Signed by: sam
GPG key ID: B4EF20DDE721CAA1
11 changed files with 231 additions and 370 deletions

View file

@ -14,14 +14,14 @@ import (
)
type PatchMemberRequest struct {
Name *string `json:"name"`
Bio *string `json:"bio"`
DisplayName *string `json:"display_name"`
Links *[]string `json:"links"`
Names *[]db.Name `json:"names"`
Pronouns *[]db.Pronoun `json:"pronouns"`
Fields *[]db.Field `json:"fields"`
Avatar *string `json:"avatar"`
Name *string `json:"name"`
Bio *string `json:"bio"`
DisplayName *string `json:"display_name"`
Links *[]string `json:"links"`
Names *[]db.FieldEntry `json:"names"`
Pronouns *[]db.PronounEntry `json:"pronouns"`
Fields *[]db.Field `json:"fields"`
Avatar *string `json:"avatar"`
}
func (s *Server) patchMember(w http.ResponseWriter, r *http.Request) error {
@ -169,42 +169,27 @@ func (s *Server) patchMember(w http.ResponseWriter, r *http.Request) error {
}
var (
names []db.Name
pronouns []db.Pronoun
fields []db.Field
)
if req.Names != nil || req.Pronouns != nil {
names := m.Names
pronouns := m.Pronouns
if req.Names != nil {
err = s.DB.SetMemberNames(ctx, tx, id, *req.Names)
if req.Names != nil {
names = *req.Names
}
if req.Pronouns != nil {
pronouns = *req.Pronouns
}
err = s.DB.SetMemberNamesPronouns(ctx, tx, id, names, pronouns)
if err != nil {
log.Errorf("setting names for member %v: %v", id, err)
return err
}
names = *req.Names
} else {
names, err = s.DB.MemberNames(ctx, id)
if err != nil {
log.Errorf("getting names for member %v: %v", id, err)
return err
}
}
if req.Pronouns != nil {
err = s.DB.SetMemberPronouns(ctx, tx, id, *req.Pronouns)
if err != nil {
log.Errorf("setting pronouns for member %v: %v", id, err)
return err
}
pronouns = *req.Pronouns
} else {
pronouns, err = s.DB.MemberPronouns(ctx, id)
if err != nil {
log.Errorf("getting fields for member %v: %v", id, err)
return err
}
m.Names = names
m.Pronouns = pronouns
}
var fields []db.Field
if req.Fields != nil {
err = s.DB.SetMemberFields(ctx, tx, id, *req.Fields)
if err != nil {
@ -232,6 +217,6 @@ func (s *Server) patchMember(w http.ResponseWriter, r *http.Request) error {
}
// echo the updated member back on success
render.JSON(w, r, dbMemberToMember(u, m, names, pronouns, fields))
render.JSON(w, r, dbMemberToMember(u, m, fields))
return nil
}