57 lines
2.2 KiB
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)
|
|
}
|
|
}
|
|
}
|