Files
api-antrian-operasi/internal/routes/routes.go
2026-02-19 14:13:25 +07:00

70 lines
1.9 KiB
Go

package routes
import (
"antrian-operasi/internal/config"
"antrian-operasi/internal/database"
antrianoperasi "antrian-operasi/internal/domain/antrian_operasi"
"antrian-operasi/internal/domain/dashboard"
"antrian-operasi/internal/domain/keycloak"
"antrian-operasi/internal/domain/reference/diagnosa"
"antrian-operasi/internal/domain/reference/dokter"
"antrian-operasi/internal/domain/reference/kategori"
"antrian-operasi/internal/domain/reference/pasien"
"antrian-operasi/internal/domain/reference/spesialis"
"antrian-operasi/internal/domain/reference/tindakan"
"antrian-operasi/internal/middleware"
"log"
"net/http"
"github.com/gin-gonic/gin"
swaggerFiles "github.com/swaggo/files"
ginSwagger "github.com/swaggo/gin-swagger"
)
func RegisterRoutes(cfg *config.Config, dbService database.Service) *gin.Engine {
gin.SetMode(cfg.Server.Mode)
router := gin.New()
router.GET("/ping", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"message": "pong",
})
})
router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
// init middleware
router.Use(middleware.SecureCORSConfig(cfg.Security))
authKeycloak, err := middleware.AuthKeycloak(cfg.Keycloak)
if err != nil {
log.Fatalf("Unable to initiate keycloak auth")
}
api := router.Group("/api")
antrian := api.Group("/antrian-operasi", authKeycloak)
{
antrianoperasi.RegisterRoutes(antrian, dbService)
}
reference := api.Group("/reference", authKeycloak)
{
kategori.RegisterRoutes(reference, dbService)
spesialis.RegisterRoutes(reference, dbService)
dokter.RegisterRoutes(reference, dbService)
pasien.RegisterRoutes(reference, dbService)
diagnosa.RegisterRoutes(reference, dbService)
tindakan.RegisterRoutes(reference, dbService)
}
dboard := api.Group("dashboard", authKeycloak)
{
dashboard.RegisterRoutes(dboard, dbService)
}
kc := api.Group("/keycloak")
{
keycloak.RegisterRoutes(kc, cfg.Keycloak)
}
return router
}