@@ -125,13 +125,13 @@ updateUser toUpdateUserId newName newAvatarUrl newBio newWebsite newLocation new
125125 pronouns = existingPronouns
126126 } <-
127127 MaybeT $ userProfileById toUpdateUserId
128- let updatedName = fromNullableUpdate existingName newName
128+ let updatedName = nullifyEmpty $ fromNullableUpdate existingName newName
129129 let updatedAvatarUrl = fromNullableUpdate existingAvatarUrl newAvatarUrl
130- let updatedBio = fromNullableUpdate existingBio newBio
131- let updatedWebsite = fromNullableUpdate existingWebsite newWebsite
132- let updatedLocation = fromNullableUpdate existingLocation newLocation
133- let updatedTwitterHandle = fromNullableUpdate existingTwitterHandle newTwitterHandle
134- let updatedPronouns = fromNullableUpdate existingPronouns newPronouns
130+ let updatedBio = nullifyEmpty $ fromNullableUpdate existingBio newBio
131+ let updatedWebsite = nullifyEmpty $ fromNullableUpdate existingWebsite newWebsite
132+ let updatedLocation = nullifyEmpty $ fromNullableUpdate existingLocation newLocation
133+ let updatedTwitterHandle = nullifyEmpty $ fromNullableUpdate existingTwitterHandle newTwitterHandle
134+ let updatedPronouns = nullifyEmpty $ fromNullableUpdate existingPronouns newPronouns
135135 PG. execute_
136136 [PG. sql |
137137 UPDATE users
@@ -145,6 +145,13 @@ updateUser toUpdateUserId newName newAvatarUrl newBio newWebsite newLocation new
145145 pronouns = #{updatedPronouns}
146146 WHERE id = #{toUpdateUserId}
147147 |]
148+ where
149+ -- Some fields must be non-empty or NULL.
150+ -- If the user sets it to non-empty, just null it out.
151+ nullifyEmpty mt = do
152+ case mt of
153+ Just t | Text. null t -> Nothing
154+ _ -> mt
148155
149156expectUserByUserId :: (PG. QueryM m ) => UserId -> m User
150157expectUserByUserId uid = do
0 commit comments