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

View File

@ -8,7 +8,8 @@ import (
)
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

View File

@ -2,15 +2,30 @@ package models
import (
"time"
"gorm.io/datatypes"
)
type AccountProfile struct {
BaseModel
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
Experience uint64 `json:"experience"`
LastSeenAt *time.Time `json:"last_seen_at"`
Birthday *time.Time `json:"birthday"`
AccountID uint `json:"account_id"`
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
Description string `json:"description"`
TimeZone string `json:"time_zone"`
Location string `json:"location"`
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)
var data struct {
Nick string `json:"nick" validate:"required"`
Description string `json:"description"`
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
Birthday time.Time `json:"birthday"`
Nick string `json:"nick" validate:"required"`
Description string `json:"description"`
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
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 {
@ -143,8 +148,18 @@ func updateUserinfo(c *fiber.Ctx) 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.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.LastName = data.LastName
account.Profile.Birthday = &data.Birthday