package router import ( "net/http" "cardverse/config" "cardverse/internal/middleware" "cardverse/internal/modules/auth" "cardverse/internal/modules/cardmaster" "cardverse/internal/modules/seriessetmaster" "cardverse/internal/modules/user" "cardverse/internal/pkg/response" "cardverse/internal/pkg/validator" "github.com/gin-gonic/gin" "gorm.io/gorm" ) func Setup(db *gorm.DB, cfg *config.Config) *gin.Engine { validator.RegisterJSONTagNameFunc() r := gin.New() r.Use(gin.Recovery()) r.Use(middleware.Logger()) r.Use(middleware.CORS()) r.Use(middleware.RateLimiter(cfg.RateLimitRequestsPerSecond, cfg.RateLimitBurst)) // Serve static asset files (images, avatars, cards, etc) r.Static("/images", "./public/images") r.Static("/public", "./public") r.GET("/health", func(c *gin.Context) { response.Success(c, http.StatusOK, "server sehat", gin.H{"status": "ok"}) }) v1 := r.Group("/api/v1") { auth.RegisterRoutes(v1, db) user.RegisterRoutes(v1, db) seriessetmaster.RegisterRoutes(v1, db) cardmaster.RegisterRoutes(v1, db) } return r }