220 lines
11 KiB
Go
220 lines
11 KiB
Go
// 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 (
|
|
"github.com/chaitin/panda-wiki/config"
|
|
"github.com/chaitin/panda-wiki/handler"
|
|
"github.com/chaitin/panda-wiki/handler/share"
|
|
"github.com/chaitin/panda-wiki/handler/v1"
|
|
"github.com/chaitin/panda-wiki/log"
|
|
"github.com/chaitin/panda-wiki/middleware"
|
|
"github.com/chaitin/panda-wiki/mq"
|
|
"github.com/chaitin/panda-wiki/pkg/captcha"
|
|
cache2 "github.com/chaitin/panda-wiki/repo/cache"
|
|
ipdb2 "github.com/chaitin/panda-wiki/repo/ipdb"
|
|
mq2 "github.com/chaitin/panda-wiki/repo/mq"
|
|
pg2 "github.com/chaitin/panda-wiki/repo/pg"
|
|
"github.com/chaitin/panda-wiki/server/http"
|
|
"github.com/chaitin/panda-wiki/store/cache"
|
|
"github.com/chaitin/panda-wiki/store/ipdb"
|
|
"github.com/chaitin/panda-wiki/store/pg"
|
|
"github.com/chaitin/panda-wiki/store/rag"
|
|
"github.com/chaitin/panda-wiki/store/s3"
|
|
"github.com/chaitin/panda-wiki/telemetry"
|
|
"github.com/chaitin/panda-wiki/usecase"
|
|
)
|
|
|
|
// Injectors from wire.go:
|
|
|
|
func createApp() (*App, error) {
|
|
configConfig, err := config.NewConfig()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
logger := log.NewLogger(configConfig)
|
|
readOnlyMiddleware := middleware.NewReadonlyMiddleware(logger)
|
|
cacheCache, err := cache.NewCache(configConfig)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
sessionMiddleware, err := middleware.NewSessionMiddleware(logger, configConfig, cacheCache)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
echo := http.NewEcho(logger, configConfig, readOnlyMiddleware, sessionMiddleware)
|
|
httpServer := &http.HTTPServer{
|
|
Echo: echo,
|
|
}
|
|
db, err := pg.NewDB(configConfig)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
userAccessRepository := pg2.NewUserAccessRepository(db, logger)
|
|
apiTokenRepo := pg2.NewAPITokenRepo(db, logger, cacheCache)
|
|
authMiddleware, err := middleware.NewAuthMiddleware(configConfig, logger, userAccessRepository, apiTokenRepo)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
ragService, err := rag.NewRAGService(configConfig, logger)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
knowledgeBaseRepository := pg2.NewKnowledgeBaseRepository(db, configConfig, logger, ragService)
|
|
nodeRepository := pg2.NewNodeRepository(db, logger)
|
|
navRepository := pg2.NewNavRepository(db, logger)
|
|
mqProducer, err := mq.NewMQProducer(configConfig, logger)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
ragRepository := mq2.NewRAGRepository(mqProducer)
|
|
userRepository := pg2.NewUserRepository(db, logger)
|
|
kbRepo := cache2.NewKBRepo(cacheCache)
|
|
knowledgeBaseUsecase, err := usecase.NewKnowledgeBaseUsecase(knowledgeBaseRepository, nodeRepository, navRepository, ragRepository, userRepository, ragService, kbRepo, logger, configConfig)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
shareAuthMiddleware := middleware.NewShareAuthMiddleware(logger, knowledgeBaseUsecase)
|
|
captchaCaptcha := captcha.NewCaptcha()
|
|
baseHandler := handler.NewBaseHandler(echo, logger, configConfig, authMiddleware, shareAuthMiddleware, captchaCaptcha)
|
|
userUsecase, err := usecase.NewUserUsecase(userRepository, logger, configConfig)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
userHandler := v1.NewUserHandler(echo, baseHandler, logger, userUsecase, authMiddleware, configConfig, cacheCache)
|
|
conversationRepository := pg2.NewConversationRepository(db, logger)
|
|
modelRepository := pg2.NewModelRepository(db, logger)
|
|
promptRepo := pg2.NewPromptRepo(db, logger)
|
|
llmUsecase := usecase.NewLLMUsecase(configConfig, ragService, conversationRepository, knowledgeBaseRepository, nodeRepository, modelRepository, promptRepo, logger)
|
|
knowledgeBaseHandler := v1.NewKnowledgeBaseHandler(baseHandler, echo, knowledgeBaseUsecase, llmUsecase, authMiddleware, logger)
|
|
appRepository := pg2.NewAppRepository(db, logger)
|
|
minioClient, err := s3.NewMinioClient(configConfig)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
authRepo := pg2.NewAuthRepo(db, logger, cacheCache)
|
|
systemSettingRepo := pg2.NewSystemSettingRepo(db, logger)
|
|
modelUsecase := usecase.NewModelUsecase(modelRepository, nodeRepository, ragRepository, ragService, logger, configConfig, knowledgeBaseRepository, systemSettingRepo)
|
|
nodeUsecase := usecase.NewNodeUsecase(nodeRepository, navRepository, appRepository, ragRepository, userRepository, knowledgeBaseRepository, llmUsecase, ragService, logger, minioClient, modelRepository, authRepo, modelUsecase)
|
|
nodeHandler := v1.NewNodeHandler(baseHandler, echo, nodeUsecase, authMiddleware, logger)
|
|
geoRepo := cache2.NewGeoCache(cacheCache, db, logger)
|
|
ipdbIPDB, err := ipdb.NewIPDB(configConfig, logger)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
ipAddressRepo := ipdb2.NewIPAddressRepo(ipdbIPDB, logger)
|
|
conversationUsecase := usecase.NewConversationUsecase(conversationRepository, nodeRepository, geoRepo, logger, ipAddressRepo, authRepo)
|
|
blockWordRepo := pg2.NewBlockWordRepo(db, logger)
|
|
chatUsecase, err := usecase.NewChatUsecase(llmUsecase, knowledgeBaseRepository, conversationUsecase, modelUsecase, appRepository, blockWordRepo, nodeRepository, authRepo, logger)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
appUsecase := usecase.NewAppUsecase(appRepository, authRepo, navRepository, nodeRepository, knowledgeBaseRepository, nodeUsecase, logger, configConfig, chatUsecase, cacheCache)
|
|
appHandler := v1.NewAppHandler(echo, baseHandler, logger, authMiddleware, appUsecase, modelUsecase, conversationUsecase, configConfig)
|
|
fileUsecase := usecase.NewFileUsecase(logger, minioClient, configConfig, systemSettingRepo)
|
|
fileHandler := v1.NewFileHandler(echo, baseHandler, logger, authMiddleware, minioClient, configConfig, fileUsecase)
|
|
modelHandler := v1.NewModelHandler(echo, baseHandler, logger, authMiddleware, modelUsecase, llmUsecase)
|
|
conversationHandler := v1.NewConversationHandler(echo, baseHandler, logger, authMiddleware, conversationUsecase)
|
|
mqConsumer, err := mq.NewMQConsumer(configConfig, logger)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
crawlerUsecase, err := usecase.NewCrawlerUsecase(logger, mqConsumer, cacheCache)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
crawlerHandler := v1.NewCrawlerHandler(echo, baseHandler, authMiddleware, logger, configConfig, crawlerUsecase, fileUsecase)
|
|
creationUsecase := usecase.NewCreationUsecase(logger, llmUsecase, modelUsecase)
|
|
creationHandler := v1.NewCreationHandler(echo, baseHandler, logger, creationUsecase)
|
|
statRepository := pg2.NewStatRepository(db, cacheCache)
|
|
statUseCase := usecase.NewStatUseCase(statRepository, nodeRepository, conversationRepository, appRepository, ipAddressRepo, geoRepo, authRepo, knowledgeBaseRepository, logger)
|
|
statHandler := v1.NewStatHandler(baseHandler, echo, statUseCase, logger, authMiddleware)
|
|
commentRepository := pg2.NewCommentRepository(db, logger)
|
|
commentUsecase := usecase.NewCommentUsecase(commentRepository, logger, nodeRepository, ipAddressRepo, authRepo)
|
|
commentHandler := v1.NewCommentHandler(echo, baseHandler, logger, authMiddleware, commentUsecase)
|
|
authUsecase, err := usecase.NewAuthUsecase(authRepo, logger, knowledgeBaseRepository, cacheCache)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
authV1Handler := v1.NewAuthV1Handler(echo, baseHandler, logger, authUsecase)
|
|
navUsecase := usecase.NewNavUsecase(navRepository, nodeRepository, ragRepository, logger)
|
|
navHandler := v1.NewNavHandler(baseHandler, echo, navUsecase, authMiddleware, logger)
|
|
apiHandlers := &v1.APIHandlers{
|
|
UserHandler: userHandler,
|
|
KnowledgeBaseHandler: knowledgeBaseHandler,
|
|
NodeHandler: nodeHandler,
|
|
AppHandler: appHandler,
|
|
FileHandler: fileHandler,
|
|
ModelHandler: modelHandler,
|
|
ConversationHandler: conversationHandler,
|
|
CrawlerHandler: crawlerHandler,
|
|
CreationHandler: creationHandler,
|
|
StatHandler: statHandler,
|
|
CommentHandler: commentHandler,
|
|
AuthV1Handler: authV1Handler,
|
|
NavHandler: navHandler,
|
|
}
|
|
shareNodeHandler := share.NewShareNodeHandler(baseHandler, echo, nodeUsecase, logger)
|
|
shareNavHandler := share.NewShareNavHandler(baseHandler, echo, navUsecase, logger)
|
|
shareAppHandler := share.NewShareAppHandler(echo, baseHandler, logger, appUsecase)
|
|
shareChatHandler := share.NewShareChatHandler(echo, baseHandler, logger, appUsecase, chatUsecase, authUsecase, conversationUsecase, modelUsecase)
|
|
sitemapUsecase := usecase.NewSitemapUsecase(nodeRepository, knowledgeBaseRepository, logger)
|
|
shareSitemapHandler := share.NewShareSitemapHandler(echo, baseHandler, sitemapUsecase, appUsecase, logger)
|
|
shareStatHandler := share.NewShareStatHandler(baseHandler, echo, statUseCase, logger)
|
|
shareCommentHandler := share.NewShareCommentHandler(echo, baseHandler, logger, commentUsecase, appUsecase)
|
|
shareAuthHandler := share.NewShareAuthHandler(echo, baseHandler, logger, knowledgeBaseUsecase, authUsecase)
|
|
shareConversationHandler := share.NewShareConversationHandler(baseHandler, echo, conversationUsecase, logger)
|
|
wechatRepository := pg2.NewWechatRepository(db, logger)
|
|
wechatServiceUsecase := usecase.NewWechatUsecase(logger, appUsecase, chatUsecase, wechatRepository, authRepo)
|
|
wecomUsecase := usecase.NewWecomUsecase(logger, cacheCache, appUsecase, chatUsecase, authRepo)
|
|
wechatAppUsecase := usecase.NewWechatAppUsecase(logger, appUsecase, chatUsecase, wechatRepository, authRepo, appRepository)
|
|
shareWechatHandler := share.NewShareWechatHandler(echo, baseHandler, logger, appUsecase, conversationUsecase, wechatServiceUsecase, wecomUsecase, wechatAppUsecase)
|
|
shareCaptchaHandler := share.NewShareCaptchaHandler(baseHandler, echo, logger)
|
|
openapiV1Handler := share.NewOpenapiV1Handler(echo, baseHandler, logger, authUsecase, appUsecase)
|
|
shareCommonHandler := share.NewShareCommonHandler(echo, baseHandler, logger, fileUsecase)
|
|
shareHandler := &share.ShareHandler{
|
|
ShareNodeHandler: shareNodeHandler,
|
|
ShareNavHandler: shareNavHandler,
|
|
ShareAppHandler: shareAppHandler,
|
|
ShareChatHandler: shareChatHandler,
|
|
ShareSitemapHandler: shareSitemapHandler,
|
|
ShareStatHandler: shareStatHandler,
|
|
ShareCommentHandler: shareCommentHandler,
|
|
ShareAuthHandler: shareAuthHandler,
|
|
ShareConversationHandler: shareConversationHandler,
|
|
ShareWechatHandler: shareWechatHandler,
|
|
ShareCaptchaHandler: shareCaptchaHandler,
|
|
OpenapiV1Handler: openapiV1Handler,
|
|
ShareCommonHandler: shareCommonHandler,
|
|
}
|
|
mcpRepository := pg2.NewMCPRepository(db, logger)
|
|
client, err := telemetry.NewClient(logger, knowledgeBaseRepository, modelUsecase, userUsecase, nodeRepository, conversationRepository, mcpRepository, configConfig)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
app := &App{
|
|
HTTPServer: httpServer,
|
|
Handlers: apiHandlers,
|
|
ShareHandlers: shareHandler,
|
|
Config: configConfig,
|
|
Logger: logger,
|
|
Telemetry: client,
|
|
}
|
|
return app, nil
|
|
}
|
|
|
|
// wire.go:
|
|
|
|
type App struct {
|
|
HTTPServer *http.HTTPServer
|
|
Handlers *v1.APIHandlers
|
|
ShareHandlers *share.ShareHandler
|
|
Config *config.Config
|
|
Logger *log.Logger
|
|
Telemetry *telemetry.Client
|
|
}
|