package routes import ( "github.com/gin-gonic/gin" "github.com/timetracker/backend/internal/api/handlers" "github.com/timetracker/backend/internal/api/middleware" ) // SetupRouter configures all the routes for the API func SetupRouter(r *gin.Engine) { // Create handlers userHandler := handlers.NewUserHandler() activityHandler := handlers.NewActivityHandler() // Public routes r.POST("/auth/login", userHandler.Login) // API routes (protected) api := r.Group("/api") api.Use(middleware.AuthMiddleware()) { // Auth routes auth := api.Group("/auth") { auth.GET("/me", userHandler.GetCurrentUser) } // User routes users := api.Group("/users") { users.GET("", userHandler.GetUsers) users.GET("/:id", userHandler.GetUserByID) users.POST("", middleware.RoleMiddleware("admin"), userHandler.CreateUser) users.PUT("/:id", middleware.RoleMiddleware("admin"), userHandler.UpdateUser) users.DELETE("/:id", middleware.RoleMiddleware("admin"), userHandler.DeleteUser) } // Activity routes activities := api.Group("/activities") { activities.GET("", activityHandler.GetActivities) activities.GET("/:id", activityHandler.GetActivityByID) activities.POST("", middleware.RoleMiddleware("admin"), activityHandler.CreateActivity) activities.PUT("/:id", middleware.RoleMiddleware("admin"), activityHandler.UpdateActivity) activities.DELETE("/:id", middleware.RoleMiddleware("admin"), activityHandler.DeleteActivity) } // TODO: Add routes for other entities (Company, Project, TimeEntry, etc.) } }