users.go
1 package users 2 3 import ( 4 "github.com/gofiber/fiber/v2" 5 "github.com/mrusme/journalist/ent" 6 "github.com/mrusme/journalist/lib" 7 "go.uber.org/zap" 8 ) 9 10 type handler struct { 11 jctx *lib.JournalistContext 12 config *lib.Config 13 entClient *ent.Client 14 logger *zap.Logger 15 } 16 17 type UserShowModel struct { 18 ID string `json:"id"` 19 Username string `json:"username"` 20 Role string `json:"role"` 21 } 22 23 type UserCreateModel struct { 24 Username string `json:"username" validate:"required,alphanum,max=32"` 25 Password string `json:"password" validate:"required"` 26 Role string `json:"role" validate:"required"` 27 } 28 29 type UserUpdateModel struct { 30 Password string `json:"password,omitempty" validate:"omitempty,min=5"` 31 Role string `json:"role,omitempty" validate:"omitempty"` 32 } 33 34 func Register( 35 jctx *lib.JournalistContext, 36 fiberRouter *fiber.Router, 37 ) { 38 endpoint := new(handler) 39 endpoint.jctx = jctx 40 endpoint.config = endpoint.jctx.Config 41 endpoint.entClient = endpoint.jctx.EntClient 42 endpoint.logger = endpoint.jctx.Logger 43 44 usersRouter := (*fiberRouter).Group("/users") 45 usersRouter.Get("/", endpoint.List) 46 usersRouter.Get("/:id", endpoint.Show) 47 usersRouter.Post("/", endpoint.Create) 48 usersRouter.Put("/:id", endpoint.Update) 49 // usersRouter.Delete("/:id", endpoint.Destroy) 50 }