veza/veza-backend-api/internal/api/routes_social.go

57 lines
2.2 KiB
Go

package api
import (
"github.com/gin-gonic/gin"
socialcore "veza-backend-api/internal/core/social"
"veza-backend-api/internal/handlers"
)
// setupSocialRoutes configure les routes sociales
func (r *APIRouter) setupSocialRoutes(router *gin.RouterGroup) {
socialService := socialcore.NewService(r.db.GormDB, r.logger)
if r.config.CacheService != nil {
socialService.SetCacheService(r.config.CacheService)
}
socialHandler := handlers.NewSocialHandler(socialService, r.logger)
groupHandler := handlers.NewGroupHandler(socialService, r.logger)
social := router.Group("/social")
{
if r.config.AuthMiddleware != nil {
social.GET("/feed", r.config.AuthMiddleware.OptionalAuth(), socialHandler.GetFeed)
} else {
social.GET("/feed", socialHandler.GetFeed)
}
social.GET("/explore", socialHandler.GetExplore)
social.GET("/trending", socialHandler.GetTrending)
social.GET("/posts/user/:user_id", socialHandler.GetPostsByUser)
social.GET("/groups", groupHandler.ListGroups)
if r.config.AuthMiddleware != nil {
social.GET("/groups/mine", r.config.AuthMiddleware.RequireAuth(), groupHandler.ListMyGroups)
social.GET("/groups/:id", r.config.AuthMiddleware.OptionalAuth(), groupHandler.GetGroup)
} else {
social.GET("/groups/:id", groupHandler.GetGroup)
}
if r.config.AuthMiddleware != nil {
protected := social.Group("")
protected.Use(r.config.AuthMiddleware.RequireAuth())
r.applyCSRFProtection(protected)
protected.POST("/posts", socialHandler.CreatePost)
protected.POST("/like", socialHandler.ToggleLike)
protected.POST("/comments", socialHandler.AddComment)
protected.POST("/groups", groupHandler.CreateGroup)
protected.POST("/groups/:id/join", groupHandler.JoinGroup)
protected.DELETE("/groups/:id/leave", groupHandler.LeaveGroup)
protected.POST("/groups/:id/request", groupHandler.RequestToJoin)
protected.GET("/groups/:id/requests", groupHandler.ListJoinRequests)
protected.POST("/groups/:id/requests/:request_id/approve", groupHandler.ApproveJoinRequest)
protected.POST("/groups/:id/requests/:request_id/reject", groupHandler.RejectJoinRequest)
protected.POST("/groups/:id/invite", groupHandler.InviteMember)
protected.PUT("/groups/:id/members/:user_id/role", groupHandler.UpdateMemberRole)
}
}
}