Files
simrsx-be/internal/interface/main-handler/main-handler.go
2025-08-25 09:57:55 +07:00

81 lines
2.6 KiB
Go

package handler
import (
"net/http"
/******************** main / transaction ********************/
auth "simrs-vx/internal/interface/main-handler/authentication"
user "simrs-vx/internal/interface/main-handler/user"
/******************** external ********************/
a "github.com/karincake/apem"
hk "github.com/karincake/hongkue"
/******************** infra ********************/
gs "simrs-vx/internal/infra/gorm-setting"
ssdb "simrs-vx/internal/infra/ss-db"
/******************** pkg ********************/
cmw "simrs-vx/pkg/cors-manager-mw"
hc "simrs-vx/pkg/handler-crud-helper"
lh "simrs-vx/pkg/lang-helper"
handlerlogger "simrs-vx/pkg/middleware/handler-logger"
zlc "simrs-vx/pkg/zerolog-ctx"
/******************** sources ********************/
division "simrs-vx/internal/interface/main-handler/division"
divisionposition "simrs-vx/internal/interface/main-handler/division-position"
installation "simrs-vx/internal/interface/main-handler/installation"
unit "simrs-vx/internal/interface/main-handler/unit"
district "simrs-vx/internal/interface/main-handler/district"
province "simrs-vx/internal/interface/main-handler/province"
regency "simrs-vx/internal/interface/main-handler/regency"
village "simrs-vx/internal/interface/main-handler/village"
///// Internal
"simrs-vx/internal/interface/main-handler/home"
)
// One place route to relatively easier to manage, ESPECIALLY in tracking
func SetRoutes() http.Handler {
/////
a.RegisterExtCall(gs.Adjust)
a.RegisterExtCall(zlc.Adjust)
a.RegisterExtCall(ssdb.Init)
a.RegisterExtCall(lh.Populate)
r := http.NewServeMux()
/******************** Main ********************/
r.HandleFunc("/", home.Home)
r.HandleFunc("POST /v1/authentication/login", auth.Login)
// r.HandleFunc("POST /v1/authentication/logout", auth.Logout)
hk.Route("POST /v1/authentication/logout", r, auth.GuardMW, auth.Logout)
hk.GroupRoutes("/v1/user", r, hk.MapHandlerFunc{
"GET /": user.O.GetList,
"GET /{id}": user.O.GetDetail,
"POST /": user.O.Create,
"PATCH /{id}": user.O.Update,
"DELETE /{id}": user.O.Delete,
"PATCH /{id}/block": user.O.Block,
"PATCH /{id}/active": user.O.Active,
})
/******************** sources ********************/
hc.RegCrud(r, "/v1/division", division.O)
hc.RegCrud(r, "/v1/division-position", divisionposition.O)
hc.RegCrud(r, "/v1/installation", installation.O)
hc.RegCrud(r, "/v1/unit", unit.O)
hc.RegCrud(r, "/v1/village", village.O)
hc.RegCrud(r, "/v1/district", district.O)
hc.RegCrud(r, "/v1/regency", regency.O)
hc.RegCrud(r, "/v1/province", province.O)
/////
return cmw.SetCors(handlerlogger.SetLog(r))
}