diff --git a/backend/db/entries.go b/backend/db/entries.go index 1b4b8cd..86e7a25 100644 --- a/backend/db/entries.go +++ b/backend/db/entries.go @@ -7,15 +7,6 @@ import ( type WordStatus string -const ( - StatusUnknown WordStatus = "" - StatusFavourite WordStatus = "favourite" - StatusOkay WordStatus = "okay" - StatusJokingly WordStatus = "jokingly" - StatusFriendsOnly WordStatus = "friends_only" - StatusAvoid WordStatus = "avoid" -) - func (w *WordStatus) UnmarshalJSON(src []byte) error { if string(src) == "null" { return nil @@ -41,7 +32,7 @@ func (w *WordStatus) UnmarshalJSON(src []byte) error { } func (w WordStatus) Valid(extra CustomPreferences) bool { - if w == StatusFavourite || w == StatusOkay || w == StatusJokingly || w == StatusFriendsOnly || w == StatusAvoid { + if w == "favourite" || w == "okay" || w == "jokingly" || w == "friends_only" || w == "avoid" { return true } diff --git a/backend/routes/bot/bot.go b/backend/routes/bot/bot.go index b5d7b42..3dd4515 100644 --- a/backend/routes/bot/bot.go +++ b/backend/routes/bot/bot.go @@ -144,7 +144,7 @@ func (bot *Bot) userPronouns(w http.ResponseWriter, r *http.Request, ev *discord var favs []db.FieldEntry for _, e := range field.Entries { - if e.Status == db.StatusFavourite { + if e.Status == "favourite" { favs = append(favs, e) } } diff --git a/backend/routes/user/patch_user.go b/backend/routes/user/patch_user.go index 8375a0a..7fa1db5 100644 --- a/backend/routes/user/patch_user.go +++ b/backend/routes/user/patch_user.go @@ -106,18 +106,6 @@ func (s *Server) patchUser(w http.ResponseWriter, r *http.Request) error { } } - if err := validateSlicePtr("name", req.Names, u.CustomPreferences); err != nil { - return *err - } - - if err := validateSlicePtr("pronoun", req.Pronouns, u.CustomPreferences); err != nil { - return *err - } - - if err := validateSlicePtr("field", req.Fields, u.CustomPreferences); err != nil { - return *err - } - // validate custom preferences if req.CustomPreferences != nil { if count := len(*req.CustomPreferences); count > db.MaxFields { @@ -134,6 +122,22 @@ func (s *Server) patchUser(w http.ResponseWriter, r *http.Request) error { } } } + customPreferences := u.CustomPreferences + if req.CustomPreferences != nil { + customPreferences = *req.CustomPreferences + } + + if err := validateSlicePtr("name", req.Names, customPreferences); err != nil { + return *err + } + + if err := validateSlicePtr("pronoun", req.Pronouns, customPreferences); err != nil { + return *err + } + + if err := validateSlicePtr("field", req.Fields, customPreferences); err != nil { + return *err + } // update avatar var avatarHash *string = nil diff --git a/scripts/seeddb/main.go b/scripts/seeddb/main.go index a430e72..c321f66 100644 --- a/scripts/seeddb/main.go +++ b/scripts/seeddb/main.go @@ -55,11 +55,11 @@ func run(c *cli.Context) error { } err = pg.SetUserNamesPronouns(ctx, tx, u.ID, []db.FieldEntry{ - {Value: "testing 1", Status: db.StatusFavourite}, - {Value: "testing 2", Status: db.StatusOkay}, + {Value: "testing 1", Status: "favourite"}, + {Value: "testing 2", Status: "okay"}, }, []db.PronounEntry{ - {Pronouns: "it/it/its/its/itself", DisplayText: ptr("it/its"), Status: db.StatusFavourite}, - {Pronouns: "they/them/their/theirs/themself", Status: db.StatusOkay}, + {Pronouns: "it/it/its/its/itself", DisplayText: ptr("it/its"), Status: "favourite"}, + {Pronouns: "they/them/their/theirs/themself", Status: "okay"}, }) if err != nil { fmt.Println("error setting pronouns:", err) @@ -70,51 +70,51 @@ func run(c *cli.Context) error { { Name: "Field 1", Entries: []db.FieldEntry{ - {Value: "Favourite 1", Status: db.StatusFavourite}, - {Value: "Okay 1", Status: db.StatusOkay}, - {Value: "Jokingly 1", Status: db.StatusJokingly}, - {Value: "Friends only 1", Status: db.StatusFriendsOnly}, - {Value: "Avoid 1", Status: db.StatusAvoid}, + {Value: "Favourite 1", Status: "favourite"}, + {Value: "Okay 1", Status: "okay"}, + {Value: "Jokingly 1", Status: "jokingly"}, + {Value: "Friends only 1", Status: "friends_only"}, + {Value: "Avoid 1", Status: "avoid"}, }, }, { Name: "Field 2", Entries: []db.FieldEntry{ - {Value: "Favourite 2", Status: db.StatusFavourite}, - {Value: "Okay 2", Status: db.StatusOkay}, - {Value: "Jokingly 2", Status: db.StatusJokingly}, - {Value: "Friends only 2", Status: db.StatusFriendsOnly}, - {Value: "Avoid 2", Status: db.StatusAvoid}, + {Value: "Favourite 2", Status: "favourite"}, + {Value: "Okay 2", Status: "okay"}, + {Value: "Jokingly 2", Status: "jokingly"}, + {Value: "Friends only 2", Status: "friends_only"}, + {Value: "Avoid 2", Status: "avoid"}, }, }, { Name: "Field 3", Entries: []db.FieldEntry{ - {Value: "Favourite 3", Status: db.StatusFavourite}, - {Value: "Okay 3", Status: db.StatusOkay}, - {Value: "Jokingly 3", Status: db.StatusJokingly}, - {Value: "Friends only 3", Status: db.StatusFriendsOnly}, - {Value: "Avoid 3", Status: db.StatusAvoid}, + {Value: "Favourite 3", Status: "favourite"}, + {Value: "Okay 3", Status: "okay"}, + {Value: "Jokingly 3", Status: "jokingly"}, + {Value: "Friends only 3", Status: "friends_only"}, + {Value: "Avoid 3", Status: "avoid"}, }, }, { Name: "Field 4", Entries: []db.FieldEntry{ - {Value: "Favourite 4", Status: db.StatusFavourite}, - {Value: "Okay 4", Status: db.StatusOkay}, - {Value: "Jokingly 4", Status: db.StatusJokingly}, - {Value: "Friends only 4", Status: db.StatusFriendsOnly}, - {Value: "Avoid 4", Status: db.StatusAvoid}, + {Value: "Favourite 4", Status: "favourite"}, + {Value: "Okay 4", Status: "okay"}, + {Value: "Jokingly 4", Status: "jokingly"}, + {Value: "Friends only 4", Status: "friends_only"}, + {Value: "Avoid 4", Status: "avoid"}, }, }, { Name: "Field 5", Entries: []db.FieldEntry{ - {Value: "Favourite 5", Status: db.StatusFavourite}, - {Value: "Okay 5", Status: db.StatusOkay}, - {Value: "Jokingly 5", Status: db.StatusJokingly}, - {Value: "Friends only 5", Status: db.StatusFriendsOnly}, - {Value: "Avoid 5", Status: db.StatusAvoid}, + {Value: "Favourite 5", Status: "favourite"}, + {Value: "Okay 5", Status: "okay"}, + {Value: "Jokingly 5", Status: "jokingly"}, + {Value: "Friends only 5", Status: "friends_only"}, + {Value: "Avoid 5", Status: "avoid"}, }, }, })