Initial commit

This commit is contained in:
2025-05-11 20:32:14 +08:00
commit d97247159f
80 changed files with 13013 additions and 0 deletions

49
server/model/user.go Normal file
View File

@@ -0,0 +1,49 @@
package model
import (
"fmt"
"gorm.io/gorm"
"time"
)
type User struct {
gorm.Model
Username string
PasswordHash []byte
IsAdmin bool
CanUpload bool
AvatarVersion int
Resources []Resource `gorm:"foreignKey:UserID"`
}
type UserView struct {
ID uint `json:"id"`
Username string `json:"username"`
CreatedAt time.Time `json:"created_at"`
AvatarPath string `json:"avatar_path"`
IsAdmin bool `json:"is_admin"`
CanUpload bool `json:"can_upload"`
}
type UserViewWithToken struct {
UserView
Token string `json:"token"`
}
func (u User) ToView() UserView {
return UserView{
ID: u.ID,
Username: u.Username,
CreatedAt: u.CreatedAt,
AvatarPath: fmt.Sprintf("/api/user/avatar/%d?v=%d", u.ID, u.AvatarVersion),
IsAdmin: u.IsAdmin,
CanUpload: u.CanUpload || u.IsAdmin,
}
}
func (u UserView) WithToken(token string) UserViewWithToken {
return UserViewWithToken{
UserView: u,
Token: token,
}
}