42 lines
1.0 KiB
Go
42 lines
1.0 KiB
Go
package api
|
|
|
|
import (
|
|
"github.com/go-chi/chi"
|
|
"github.com/go-chi/chi/middleware"
|
|
|
|
rh "github.com/rinosukmandityo/hexagonal-login/repositories/helper"
|
|
"github.com/rinosukmandityo/hexagonal-login/services/logic"
|
|
)
|
|
|
|
func RegisterHandler() *chi.Mux {
|
|
r := chi.NewRouter()
|
|
r.Use(middleware.RequestID)
|
|
r.Use(middleware.RealIP)
|
|
r.Use(middleware.Recoverer)
|
|
|
|
webRepo := rh.ChooseRepo()
|
|
|
|
registerUserHandler(r, NewUserHandler(logic.NewUserService(webRepo)))
|
|
registerLoginHandler(r, NewLoginHandler(logic.NewLoginService(webRepo)))
|
|
|
|
return r
|
|
}
|
|
|
|
func registerUserHandler(r *chi.Mux, handler UserHandler) {
|
|
// Subrouters:
|
|
r.Route("/user", func(r chi.Router) {
|
|
r.Post("/", handler.Post) // POST /user
|
|
// Subrouters:
|
|
r.Route("/{id}", func(r chi.Router) {
|
|
r.Use(handler.UserCtx)
|
|
r.Get("/", handler.Get) // GET /user/userid01
|
|
r.Put("/", handler.Update) // PUT /user/userid01
|
|
r.Delete("/", handler.Delete) // DELETE /user/userid01
|
|
})
|
|
})
|
|
}
|
|
|
|
func registerLoginHandler(r *chi.Mux, handler LoginHandler) {
|
|
r.Post("/auth", handler.Auth)
|
|
}
|