feat: update
This commit is contained in:
@@ -57,11 +57,13 @@ func Provide(opts ...opt.Option) error {
|
||||
auth *auth,
|
||||
pays *pays,
|
||||
posts *posts,
|
||||
users *users,
|
||||
) (contracts.HttpRoute, error) {
|
||||
obj := &Routes{
|
||||
auth: auth,
|
||||
pays: pays,
|
||||
posts: posts,
|
||||
users: users,
|
||||
}
|
||||
if err := obj.Prepare(); err != nil {
|
||||
return nil, err
|
||||
@@ -71,5 +73,12 @@ func Provide(opts ...opt.Option) error {
|
||||
}, atom.GroupRoutes); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := container.Container.Provide(func() (*users, error) {
|
||||
obj := &users{}
|
||||
|
||||
return obj, nil
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ type Routes struct {
|
||||
auth *auth
|
||||
pays *pays
|
||||
posts *posts
|
||||
users *users
|
||||
}
|
||||
|
||||
func (r *Routes) Prepare() error {
|
||||
@@ -82,4 +83,16 @@ func (r *Routes) Register(router fiber.Router) {
|
||||
Local[*model.Users]("user"),
|
||||
))
|
||||
|
||||
// 注册路由组: users
|
||||
router.Get("/users/profile", DataFunc1(
|
||||
r.users.Profile,
|
||||
Local[*model.Users]("user"),
|
||||
))
|
||||
|
||||
router.Put("/users/username", Func2(
|
||||
r.users.Update,
|
||||
Local[*model.Users]("user"),
|
||||
Body[ProfileForm]("form"),
|
||||
))
|
||||
|
||||
}
|
||||
|
||||
54
backend/app/http/users.go
Normal file
54
backend/app/http/users.go
Normal file
@@ -0,0 +1,54 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"quyun/app/models"
|
||||
"quyun/database/schemas/public/model"
|
||||
|
||||
"github.com/gofiber/fiber/v3"
|
||||
)
|
||||
|
||||
// @provider
|
||||
type users struct{}
|
||||
|
||||
type UserInfo struct {
|
||||
ID int64 `json:"id,omitempty"`
|
||||
CreatedAt time.Time `json:"created_at,omitempty"`
|
||||
Username string `json:"username,omitempty"`
|
||||
}
|
||||
|
||||
// @Router /users/profile [get]
|
||||
// @Bind user local
|
||||
func (ctl *users) Profile(ctx fiber.Ctx, user *model.Users) (*UserInfo, error) {
|
||||
return &UserInfo{
|
||||
ID: user.ID,
|
||||
CreatedAt: user.CreatedAt,
|
||||
Username: user.Username,
|
||||
}, nil
|
||||
}
|
||||
|
||||
type ProfileForm struct {
|
||||
Username string `json:"username" validate:"required"`
|
||||
}
|
||||
|
||||
// Update
|
||||
// @Router /users/username [put]
|
||||
// @Bind user local
|
||||
// @Bind form body
|
||||
func (ctl *users) Update(ctx fiber.Ctx, user *model.Users, form *ProfileForm) error {
|
||||
username := strings.TrimSpace(form.Username)
|
||||
if len([]rune(username)) > 12 {
|
||||
return fiber.NewError(fiber.StatusBadRequest, "Username exceeds maximum length of 12 characters")
|
||||
}
|
||||
|
||||
if username == "" {
|
||||
return fiber.NewError(fiber.StatusBadRequest, "Username cannot be empty")
|
||||
}
|
||||
|
||||
if err := models.Users.UpdateUsername(ctx.Context(), user.ID, username); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user