/ api / v1 / users / users.go
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  }