// Code generated by Wire. DO NOT EDIT. //go:generate go run -mod=mod github.com/google/wire/cmd/wire //go:build !wireinject // +build !wireinject package main import ( "carrot_bbs/internal/handler" "carrot_bbs/internal/repository" "carrot_bbs/internal/router" "carrot_bbs/internal/service" "carrot_bbs/internal/wire" ) // Injectors from wire.go: // InitializeApp 初始化应用程序 func InitializeApp() (*App, error) { config, err := wire.ProvideConfig() if err != nil { return nil, err } db, err := wire.ProvideDB(config) if err != nil { return nil, err } userRepository := repository.NewUserRepository(db) systemNotificationRepository := repository.NewSystemNotificationRepository(db) pushRecordRepository := repository.NewPushRecordRepository(db) deviceTokenRepository := repository.NewDeviceTokenRepository(db) messageRepository := repository.NewMessageRepository(db) hub := wire.ProvideSSEHub() pushService := wire.ProvidePushService(pushRecordRepository, deviceTokenRepository, messageRepository, hub) postRepository := repository.NewPostRepository(db) client := wire.ProvideRedisClient(config) cache := wire.ProvideCache(config, client) systemMessageService := wire.ProvideSystemMessageService(systemNotificationRepository, pushService, userRepository, postRepository, cache) emailClient := wire.ProvideEmailClient(config) emailService := wire.ProvideEmailService(emailClient) userService := wire.ProvideUserService(userRepository, systemMessageService, emailService, cache) userActivityRepository := wire.ProvideUserActivityRepository(db, cache) userActivityService := wire.ProvideUserActivityService(userActivityRepository) gorseClient := wire.ProvideGorseClient(config) openaiClient := wire.ProvideOpenAIClient(config) postAIService := wire.ProvidePostAIService(openaiClient) transactionManager := wire.ProvideTransactionManager(db) postService := wire.ProvidePostService(postRepository, systemMessageService, gorseClient, postAIService, cache, transactionManager) commentRepository := repository.NewCommentRepository(db) commentService := wire.ProvideCommentService(commentRepository, postRepository, systemMessageService, gorseClient, postAIService, cache) operationLogRepository := repository.NewOperationLogRepository(db) loginLogRepository := repository.NewLoginLogRepository(db) dataChangeLogRepository := repository.NewDataChangeLogRepository(db) logger := wire.ProvideLogger() asyncLogManager := wire.ProvideAsyncLogManager(db, operationLogRepository, loginLogRepository, dataChangeLogRepository, logger, config) operationLogService := wire.ProvideOperationLogService(asyncLogManager, operationLogRepository) loginLogService := wire.ProvideLoginLogService(asyncLogManager, loginLogRepository) dataChangeLogService := wire.ProvideDataChangeLogService(asyncLogManager, dataChangeLogRepository) logService := wire.ProvideLogService(operationLogService, loginLogService, dataChangeLogService) userHandler := wire.ProvideUserHandler(userService, userActivityService, postService, commentService, logService) postHandler := wire.ProvidePostHandler(postService, userService, logService) commentHandler := handler.NewCommentHandler(commentService) chatService := wire.ProvideChatService(db, messageRepository, userRepository, hub, cache) messageService := wire.ProvideMessageService(db, messageRepository, cache) groupRepository := repository.NewGroupRepository(db) groupService := wire.ProvideGroupService(db, groupRepository, userRepository, messageRepository, hub, cache) messageHandler := wire.ProvideMessageHandler(chatService, messageService, userService, groupService, hub) notificationRepository := repository.NewNotificationRepository(db) notificationService := wire.ProvideNotificationService(notificationRepository, cache) notificationHandler := handler.NewNotificationHandler(notificationService) s3Client, err := wire.ProvideS3Client(config) if err != nil { return nil, err } uploadService := wire.ProvideUploadService(s3Client, userService) uploadHandler := handler.NewUploadHandler(uploadService) jwtService := wire.ProvideJWTService(config) pushHandler := handler.NewPushHandler(pushService) systemMessageHandler := wire.ProvideSystemMessageHandler(systemMessageService, systemNotificationRepository, cache) groupHandler := wire.ProvideGroupHandler(groupService, userService) stickerRepository := repository.NewStickerRepository(db) stickerService := wire.ProvideStickerService(stickerRepository) stickerHandler := handler.NewStickerHandler(stickerService) gorseHandler := wire.ProvideGorseHandler(config, db) voteRepository := repository.NewVoteRepository(db) voteService := wire.ProvideVoteService(voteRepository, postRepository, cache, postAIService, systemMessageService) voteHandler := handler.NewVoteHandler(voteService, postService) scheduleRepository := repository.NewScheduleRepository(db) scheduleService := wire.ProvideScheduleService(scheduleRepository) server := wire.ProvideGRPCServer(config, logger) taskManager := wire.ProvideTaskManager(server) scheduleSyncService := wire.ProvideScheduleSyncService(taskManager, scheduleRepository, logger) scheduleHandler := wire.ProvideScheduleHandler(scheduleService, scheduleSyncService) roleRepository := wire.ProvideRoleRepository(db) enforcer := wire.ProvideCasbinEnforcer(config, db) casbinService := wire.ProvideCasbinService(enforcer, cache, roleRepository, config) roleService := wire.ProvideRoleService(roleRepository, casbinService) roleHandler := handler.NewRoleHandler(roleService) adminUserService := wire.ProvideAdminUserService(userRepository) adminUserHandler := handler.NewAdminUserHandler(adminUserService) adminPostService := wire.ProvideAdminPostService(postRepository, cache) adminPostHandler := handler.NewAdminPostHandler(adminPostService) adminCommentService := wire.ProvideAdminCommentService(commentRepository, postRepository) adminCommentHandler := handler.NewAdminCommentHandler(adminCommentService) adminGroupService := wire.ProvideAdminGroupService(groupRepository, userRepository) adminGroupHandler := handler.NewAdminGroupHandler(adminGroupService) adminDashboardService := wire.ProvideAdminDashboardService(db, userRepository, postRepository, commentRepository, groupRepository, userActivityRepository) adminDashboardHandler := handler.NewAdminDashboardHandler(adminDashboardService) adminLogHandler := handler.NewAdminLogHandler(operationLogService, loginLogService, dataChangeLogService) router := ProvideRouter(userHandler, postHandler, commentHandler, messageHandler, notificationHandler, uploadHandler, jwtService, pushHandler, systemMessageHandler, groupHandler, stickerHandler, gorseHandler, voteHandler, scheduleHandler, roleHandler, adminUserHandler, adminPostHandler, adminCommentHandler, adminGroupHandler, adminDashboardHandler, adminLogHandler, logService, userActivityService, casbinService) app := NewApp(config, db, router, pushService, server, logger) return app, nil } // wire.go: // ProvideRouter 提供路由 func ProvideRouter( userHandler *handler.UserHandler, postHandler *handler.PostHandler, commentHandler *handler.CommentHandler, messageHandler *handler.MessageHandler, notificationHandler *handler.NotificationHandler, uploadHandler *handler.UploadHandler, jwtService *service.JWTService, pushHandler *handler.PushHandler, systemMessageHandler *handler.SystemMessageHandler, groupHandler *handler.GroupHandler, stickerHandler *handler.StickerHandler, gorseHandler *handler.GorseHandler, voteHandler *handler.VoteHandler, scheduleHandler *handler.ScheduleHandler, roleHandler *handler.RoleHandler, adminUserHandler *handler.AdminUserHandler, adminPostHandler *handler.AdminPostHandler, adminCommentHandler *handler.AdminCommentHandler, adminGroupHandler *handler.AdminGroupHandler, adminDashboardHandler *handler.AdminDashboardHandler, adminLogHandler *handler.AdminLogHandler, logService *service.LogService, activityService service.UserActivityService, casbinService service.CasbinService, ) *router.Router { return router.New( userHandler, postHandler, commentHandler, messageHandler, notificationHandler, uploadHandler, jwtService, pushHandler, systemMessageHandler, groupHandler, stickerHandler, gorseHandler, voteHandler, scheduleHandler, roleHandler, adminUserHandler, adminPostHandler, adminCommentHandler, adminGroupHandler, adminDashboardHandler, adminLogHandler, logService, activityService, casbinService, ) }