Enchance user profile

💥 Move description from account to profile
This commit is contained in:
LittleSheep 2025-03-02 12:00:29 +08:00
parent 4616f7cc93
commit 5979fd5b2c
4 changed files with 47 additions and 14 deletions

View File

@ -17,7 +17,6 @@ type Account struct {
Name string `json:"name" gorm:"uniqueIndex"` Name string `json:"name" gorm:"uniqueIndex"`
Nick string `json:"nick"` Nick string `json:"nick"`
Description string `json:"description"`
Avatar *string `json:"avatar"` Avatar *string `json:"avatar"`
Banner *string `json:"banner"` Banner *string `json:"banner"`
ConfirmedAt *time.Time `json:"confirmed_at"` ConfirmedAt *time.Time `json:"confirmed_at"`
@ -39,6 +38,9 @@ type Account struct {
Factors []AuthFactor `json:"factors,omitempty"` Factors []AuthFactor `json:"factors,omitempty"`
Relations []AccountRelationship `json:"relations,omitempty" gorm:"foreignKey:AccountID"` Relations []AccountRelationship `json:"relations,omitempty" gorm:"foreignKey:AccountID"`
// Keep this for backward compability
Description string `json:"description" gorm:"-"`
} }
func (v Account) GetAvatar() *string { func (v Account) GetAvatar() *string {

View File

@ -8,7 +8,8 @@ import (
) )
type AuthConfig struct { type AuthConfig struct {
MaximumAuthSteps int `json:"maximum_auth_steps" validate:"required,min=1,max=99"` AlwaysRisky bool `json:"always_risky"`
MaximumAuthSteps int `json:"maximum_auth_steps" validate:"required,min=1,max=99"`
} }
type AuthFactorType = int8 type AuthFactorType = int8

View File

@ -2,15 +2,30 @@ package models
import ( import (
"time" "time"
"gorm.io/datatypes"
) )
type AccountProfile struct { type AccountProfile struct {
BaseModel BaseModel
FirstName string `json:"first_name"` FirstName string `json:"first_name"`
LastName string `json:"last_name"` LastName string `json:"last_name"`
Experience uint64 `json:"experience"` Description string `json:"description"`
LastSeenAt *time.Time `json:"last_seen_at"` TimeZone string `json:"time_zone"`
Birthday *time.Time `json:"birthday"` Location string `json:"location"`
AccountID uint `json:"account_id"` Pronouns string `json:"pronouns"`
Gender string `json:"gender"`
Links datatypes.JSONMap `json:"links"`
Experience uint64 `json:"experience"`
LastSeenAt *time.Time `json:"last_seen_at"`
Birthday *time.Time `json:"birthday"`
AccountID uint `json:"account_id"`
}
type AccountPage struct {
BaseModel
Content string `json:"content"`
AccountID uint `json:"account_id"`
} }

View File

@ -119,11 +119,16 @@ func updateUserinfo(c *fiber.Ctx) error {
user := c.Locals("user").(models.Account) user := c.Locals("user").(models.Account)
var data struct { var data struct {
Nick string `json:"nick" validate:"required"` Nick string `json:"nick" validate:"required"`
Description string `json:"description"` Description string `json:"description"`
FirstName string `json:"first_name"` FirstName string `json:"first_name"`
LastName string `json:"last_name"` LastName string `json:"last_name"`
Birthday time.Time `json:"birthday"` Location string `json:"location"`
TimeZone string `json:"time_zone"`
Gender string `json:"gender"`
Pronouns string `json:"pronouns"`
Links map[string]string `json:"links"`
Birthday time.Time `json:"birthday"`
} }
if err := exts.BindAndValidate(c, &data); err != nil { if err := exts.BindAndValidate(c, &data); err != nil {
@ -143,8 +148,18 @@ func updateUserinfo(c *fiber.Ctx) error {
return fiber.NewError(fiber.StatusInternalServerError, err.Error()) return fiber.NewError(fiber.StatusInternalServerError, err.Error())
} }
var links = make(map[string]any)
for k, v := range data.Links {
links[k] = v
}
account.Nick = data.Nick account.Nick = data.Nick
account.Description = data.Description account.Profile.Gender = data.Gender
account.Profile.Pronouns = data.Pronouns
account.Profile.Location = data.Location
account.Profile.TimeZone = data.TimeZone
account.Profile.Links = links
account.Profile.Description = data.Description
account.Profile.FirstName = data.FirstName account.Profile.FirstName = data.FirstName
account.Profile.LastName = data.LastName account.Profile.LastName = data.LastName
account.Profile.Birthday = &data.Birthday account.Profile.Birthday = &data.Birthday