- Removed Gorse-related configurations, handlers, and dependencies from the codebase. - Introduced HotRank feature with configuration options for ranking posts based on recent activity. - Updated application structure to support HotRank processing, including new caching mechanisms and database interactions. - Cleaned up related DTOs and repository methods to reflect the removal of Gorse and the addition of HotRank functionality.
122 lines
3.4 KiB
Go
122 lines
3.4 KiB
Go
package wire
|
|
|
|
import (
|
|
"carrot_bbs/internal/cache"
|
|
"carrot_bbs/internal/handler"
|
|
"carrot_bbs/internal/pkg/sse"
|
|
"carrot_bbs/internal/repository"
|
|
"carrot_bbs/internal/service"
|
|
|
|
"github.com/google/wire"
|
|
)
|
|
|
|
// HandlerSet Handler 层 Provider Set
|
|
var HandlerSet = wire.NewSet(
|
|
// 直接使用构造函数的 Handler
|
|
handler.NewCommentHandler,
|
|
handler.NewNotificationHandler,
|
|
handler.NewUploadHandler,
|
|
handler.NewPushHandler,
|
|
handler.NewStickerHandler,
|
|
handler.NewVoteHandler,
|
|
handler.NewRoleHandler,
|
|
handler.NewAdminUserHandler,
|
|
handler.NewAdminPostHandler,
|
|
handler.NewAdminCommentHandler,
|
|
handler.NewAdminGroupHandler,
|
|
handler.NewAdminDashboardHandler,
|
|
handler.NewAdminLogHandler,
|
|
handler.NewQRCodeHandler,
|
|
|
|
// 需要特殊处理的 Handler
|
|
ProvideUserHandler,
|
|
ProvidePostHandler,
|
|
ProvideMessageHandler,
|
|
ProvideSystemMessageHandler,
|
|
ProvideGroupHandler,
|
|
ProvideScheduleHandler,
|
|
)
|
|
|
|
// ProvideUserHandler 提供用户处理器
|
|
func ProvideUserHandler(
|
|
userService service.UserService,
|
|
activityService service.UserActivityService,
|
|
postService service.PostService,
|
|
commentService *service.CommentService,
|
|
logService *service.LogService,
|
|
) *handler.UserHandler {
|
|
h := handler.NewUserHandler(userService, activityService)
|
|
h.SetLogService(logService)
|
|
|
|
// 同时设置到其他服务
|
|
if ps, ok := postService.(interface{ SetLogService(*service.LogService) }); ok {
|
|
ps.SetLogService(logService)
|
|
}
|
|
if commentService != nil {
|
|
commentService.SetLogService(logService)
|
|
}
|
|
|
|
return h
|
|
}
|
|
|
|
// ProvidePostHandler 提供帖子处理器
|
|
func ProvidePostHandler(
|
|
postService service.PostService,
|
|
userService service.UserService,
|
|
logService *service.LogService,
|
|
) *handler.PostHandler {
|
|
h := handler.NewPostHandler(postService, userService)
|
|
if ps, ok := postService.(interface{ SetLogService(*service.LogService) }); ok {
|
|
ps.SetLogService(logService)
|
|
}
|
|
return h
|
|
}
|
|
|
|
// ProvideAdminPostHandler 提供管理端帖子处理器
|
|
func ProvideAdminPostHandler(
|
|
postService service.AdminPostService,
|
|
logService *service.LogService,
|
|
) *handler.AdminPostHandler {
|
|
h := handler.NewAdminPostHandler(postService)
|
|
if ps, ok := postService.(interface{ SetLogService(*service.LogService) }); ok {
|
|
ps.SetLogService(logService)
|
|
}
|
|
return h
|
|
}
|
|
|
|
// 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)
|
|
}
|
|
|
|
// ProvideScheduleHandler 提供课表处理器
|
|
func ProvideScheduleHandler(
|
|
scheduleService service.ScheduleService,
|
|
scheduleSyncService service.ScheduleSyncService,
|
|
) *handler.ScheduleHandler {
|
|
return handler.NewScheduleHandler(scheduleService, scheduleSyncService)
|
|
}
|