package wire import ( "carrot_bbs/internal/cache" "carrot_bbs/internal/config" "carrot_bbs/internal/handler" "carrot_bbs/internal/pkg/sse" "carrot_bbs/internal/repository" "carrot_bbs/internal/service" "github.com/google/wire" "gorm.io/gorm" ) // HandlerSet Handler 层 Provider Set var HandlerSet = wire.NewSet( // 直接使用构造函数的 Handler handler.NewCommentHandler, handler.NewNotificationHandler, handler.NewUploadHandler, handler.NewPushHandler, handler.NewStickerHandler, handler.NewVoteHandler, handler.NewRoleHandler, // 需要特殊处理的 Handler ProvideUserHandler, ProvidePostHandler, ProvideMessageHandler, ProvideSystemMessageHandler, ProvideGroupHandler, ProvideGorseHandler, ProvideScheduleHandler, ) // ProvideUserHandler 提供用户处理器 func ProvideUserHandler( userService service.UserService, activityService service.UserActivityService, ) *handler.UserHandler { return handler.NewUserHandler(userService, activityService) } // ProvidePostHandler 提供帖子处理器 func ProvidePostHandler( postService service.PostService, userService service.UserService, ) *handler.PostHandler { return handler.NewPostHandler(postService, userService) } // ProvideMessageHandler 提供消息处理器 func ProvideMessageHandler( chatService service.ChatService, messageService *service.MessageService, userService service.UserService, groupService service.GroupService, sseHub *sse.Hub, ) *handler.MessageHandler { return handler.NewMessageHandler(chatService, messageService, userService, groupService, sseHub) } // ProvideSystemMessageHandler 提供系统消息处理器 func ProvideSystemMessageHandler( systemMsgService service.SystemMessageService, systemNotificationRepo *repository.SystemNotificationRepository, cacheBackend cache.Cache, ) *handler.SystemMessageHandler { return handler.NewSystemMessageHandler(systemMsgService, systemNotificationRepo, cacheBackend) } // ProvideGroupHandler 提供群组处理器 func ProvideGroupHandler( groupService service.GroupService, userService service.UserService, ) *handler.GroupHandler { return handler.NewGroupHandler(groupService, userService) } // ProvideGorseHandler 提供 Gorse 处理器 func ProvideGorseHandler(cfg *config.Config, db *gorm.DB) *handler.GorseHandler { return handler.NewGorseHandler(cfg.Gorse, db) } // ProvideScheduleHandler 提供课表处理器 func ProvideScheduleHandler( scheduleService service.ScheduleService, scheduleSyncService service.ScheduleSyncService, ) *handler.ScheduleHandler { return handler.NewScheduleHandler(scheduleService, scheduleSyncService) }