init push
This commit is contained in:
28
backend/cmd/api/main.go
Normal file
28
backend/cmd/api/main.go
Normal file
@@ -0,0 +1,28 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/chaitin/panda-wiki/setup"
|
||||
)
|
||||
|
||||
// @title panda-wiki API
|
||||
// @version 1.0
|
||||
// @description panda-wiki API documentation
|
||||
// @BasePath /
|
||||
// @securityDefinitions.apikey bearerAuth
|
||||
// @in header
|
||||
// @name Authorization
|
||||
// @description Type "Bearer" + a space + your token to authorize
|
||||
func main() {
|
||||
app, err := createApp()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
if err := setup.CheckInitCert(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
port := app.Config.HTTP.Port
|
||||
app.Logger.Info(fmt.Sprintf("Starting server on port %d", port))
|
||||
app.HTTPServer.Echo.Logger.Fatal(app.HTTPServer.Echo.Start(fmt.Sprintf(":%d", port)))
|
||||
}
|
||||
39
backend/cmd/api/wire.go
Normal file
39
backend/cmd/api/wire.go
Normal file
@@ -0,0 +1,39 @@
|
||||
//go:build wireinject
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"github.com/google/wire"
|
||||
|
||||
"github.com/chaitin/panda-wiki/config"
|
||||
share "github.com/chaitin/panda-wiki/handler/share"
|
||||
v1 "github.com/chaitin/panda-wiki/handler/v1"
|
||||
"github.com/chaitin/panda-wiki/log"
|
||||
"github.com/chaitin/panda-wiki/server/http"
|
||||
"github.com/chaitin/panda-wiki/telemetry"
|
||||
)
|
||||
|
||||
func createApp() (*App, error) {
|
||||
wire.Build(
|
||||
wire.Struct(new(App), "*"),
|
||||
wire.NewSet(
|
||||
config.ProviderSet,
|
||||
log.ProviderSet,
|
||||
telemetry.ProviderSet,
|
||||
|
||||
http.ProviderSet,
|
||||
v1.ProviderSet,
|
||||
share.ProviderSet,
|
||||
),
|
||||
)
|
||||
return &App{}, nil
|
||||
}
|
||||
|
||||
type App struct {
|
||||
HTTPServer *http.HTTPServer
|
||||
Handlers *v1.APIHandlers
|
||||
ShareHandlers *share.ShareHandler
|
||||
Config *config.Config
|
||||
Logger *log.Logger
|
||||
Telemetry *telemetry.Client
|
||||
}
|
||||
219
backend/cmd/api/wire_gen.go
Normal file
219
backend/cmd/api/wire_gen.go
Normal file
@@ -0,0 +1,219 @@
|
||||
// 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
|
||||
}
|
||||
18
backend/cmd/consumer/main.go
Normal file
18
backend/cmd/consumer/main.go
Normal file
@@ -0,0 +1,18 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
)
|
||||
|
||||
func main() {
|
||||
app, err := createApp()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
if err := app.MQConsumer.StartConsumerHandlers(context.Background()); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
if err := app.MQConsumer.Close(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
31
backend/cmd/consumer/wire.go
Normal file
31
backend/cmd/consumer/wire.go
Normal file
@@ -0,0 +1,31 @@
|
||||
//go:build wireinject
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"github.com/google/wire"
|
||||
|
||||
"github.com/chaitin/panda-wiki/config"
|
||||
handler "github.com/chaitin/panda-wiki/handler/mq"
|
||||
"github.com/chaitin/panda-wiki/log"
|
||||
"github.com/chaitin/panda-wiki/mq"
|
||||
)
|
||||
|
||||
func createApp() (*App, error) {
|
||||
wire.Build(
|
||||
wire.Struct(new(App), "*"),
|
||||
wire.NewSet(
|
||||
config.ProviderSet,
|
||||
log.ProviderSet,
|
||||
handler.ProviderSet,
|
||||
),
|
||||
)
|
||||
return &App{}, nil
|
||||
}
|
||||
|
||||
type App struct {
|
||||
MQConsumer mq.MQConsumer
|
||||
Config *config.Config
|
||||
MQHandlers *handler.MQHandlers
|
||||
StatCronHandler *handler.CronHandler
|
||||
}
|
||||
113
backend/cmd/consumer/wire_gen.go
Normal file
113
backend/cmd/consumer/wire_gen.go
Normal file
@@ -0,0 +1,113 @@
|
||||
// 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"
|
||||
mq3 "github.com/chaitin/panda-wiki/handler/mq"
|
||||
"github.com/chaitin/panda-wiki/log"
|
||||
"github.com/chaitin/panda-wiki/mq"
|
||||
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/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/usecase"
|
||||
)
|
||||
|
||||
// Injectors from wire.go:
|
||||
|
||||
func createApp() (*App, error) {
|
||||
configConfig, err := config.NewConfig()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
logger := log.NewLogger(configConfig)
|
||||
mqConsumer, err := mq.NewMQConsumer(configConfig, logger)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
ragService, err := rag.NewRAGService(configConfig, logger)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
db, err := pg.NewDB(configConfig)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
nodeRepository := pg2.NewNodeRepository(db, logger)
|
||||
knowledgeBaseRepository := pg2.NewKnowledgeBaseRepository(db, configConfig, logger, ragService)
|
||||
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)
|
||||
mqProducer, err := mq.NewMQProducer(configConfig, logger)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
ragRepository := mq2.NewRAGRepository(mqProducer)
|
||||
systemSettingRepo := pg2.NewSystemSettingRepo(db, logger)
|
||||
modelUsecase := usecase.NewModelUsecase(modelRepository, nodeRepository, ragRepository, ragService, logger, configConfig, knowledgeBaseRepository, systemSettingRepo)
|
||||
ragmqHandler, err := mq3.NewRAGMQHandler(mqConsumer, logger, ragService, nodeRepository, knowledgeBaseRepository, llmUsecase, modelUsecase)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
ragDocUpdateHandler, err := mq3.NewRagDocUpdateHandler(mqConsumer, logger, nodeRepository)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
cacheCache, err := cache.NewCache(configConfig)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
statRepository := pg2.NewStatRepository(db, cacheCache)
|
||||
appRepository := pg2.NewAppRepository(db, logger)
|
||||
ipdbIPDB, err := ipdb.NewIPDB(configConfig, logger)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
ipAddressRepo := ipdb2.NewIPAddressRepo(ipdbIPDB, logger)
|
||||
geoRepo := cache2.NewGeoCache(cacheCache, db, logger)
|
||||
authRepo := pg2.NewAuthRepo(db, logger, cacheCache)
|
||||
statUseCase := usecase.NewStatUseCase(statRepository, nodeRepository, conversationRepository, appRepository, ipAddressRepo, geoRepo, authRepo, knowledgeBaseRepository, logger)
|
||||
navRepository := pg2.NewNavRepository(db, logger)
|
||||
userRepository := pg2.NewUserRepository(db, logger)
|
||||
minioClient, err := s3.NewMinioClient(configConfig)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
nodeUsecase := usecase.NewNodeUsecase(nodeRepository, navRepository, appRepository, ragRepository, userRepository, knowledgeBaseRepository, llmUsecase, ragService, logger, minioClient, modelRepository, authRepo, modelUsecase)
|
||||
cronHandler, err := mq3.NewCronHandler(logger, statRepository, nodeRepository, statUseCase, nodeUsecase)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
mqHandlers := &mq3.MQHandlers{
|
||||
RAGMQHandler: ragmqHandler,
|
||||
RagDocUpdateHandler: ragDocUpdateHandler,
|
||||
StatCronHandler: cronHandler,
|
||||
}
|
||||
app := &App{
|
||||
MQConsumer: mqConsumer,
|
||||
Config: configConfig,
|
||||
MQHandlers: mqHandlers,
|
||||
StatCronHandler: cronHandler,
|
||||
}
|
||||
return app, nil
|
||||
}
|
||||
|
||||
// wire.go:
|
||||
|
||||
type App struct {
|
||||
MQConsumer mq.MQConsumer
|
||||
Config *config.Config
|
||||
MQHandlers *mq3.MQHandlers
|
||||
StatCronHandler *mq3.CronHandler
|
||||
}
|
||||
11
backend/cmd/migrate/main.go
Normal file
11
backend/cmd/migrate/main.go
Normal file
@@ -0,0 +1,11 @@
|
||||
package main
|
||||
|
||||
func main() {
|
||||
app, err := createApp()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
if err := app.MigrationManager.Execute(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
28
backend/cmd/migrate/wire.go
Normal file
28
backend/cmd/migrate/wire.go
Normal file
@@ -0,0 +1,28 @@
|
||||
//go:build wireinject
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"github.com/google/wire"
|
||||
|
||||
"github.com/chaitin/panda-wiki/config"
|
||||
"github.com/chaitin/panda-wiki/log"
|
||||
"github.com/chaitin/panda-wiki/migration"
|
||||
)
|
||||
|
||||
func createApp() (*App, error) {
|
||||
wire.Build(
|
||||
wire.Struct(new(App), "*"),
|
||||
wire.NewSet(
|
||||
config.ProviderSet,
|
||||
log.ProviderSet,
|
||||
migration.ProviderSet,
|
||||
),
|
||||
)
|
||||
return &App{}, nil
|
||||
}
|
||||
|
||||
type App struct {
|
||||
Config *config.Config
|
||||
MigrationManager *migration.Manager
|
||||
}
|
||||
100
backend/cmd/migrate/wire_gen.go
Normal file
100
backend/cmd/migrate/wire_gen.go
Normal file
@@ -0,0 +1,100 @@
|
||||
// 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/log"
|
||||
"github.com/chaitin/panda-wiki/migration"
|
||||
"github.com/chaitin/panda-wiki/migration/fns"
|
||||
"github.com/chaitin/panda-wiki/mq"
|
||||
cache2 "github.com/chaitin/panda-wiki/repo/cache"
|
||||
mq2 "github.com/chaitin/panda-wiki/repo/mq"
|
||||
pg2 "github.com/chaitin/panda-wiki/repo/pg"
|
||||
"github.com/chaitin/panda-wiki/store/cache"
|
||||
"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/usecase"
|
||||
)
|
||||
|
||||
// Injectors from wire.go:
|
||||
|
||||
func createApp() (*App, error) {
|
||||
configConfig, err := config.NewConfig()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
db, err := pg.NewDB(configConfig)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
logger := log.NewLogger(configConfig)
|
||||
nodeRepository := pg2.NewNodeRepository(db, logger)
|
||||
navRepository := pg2.NewNavRepository(db, logger)
|
||||
appRepository := pg2.NewAppRepository(db, logger)
|
||||
mqProducer, err := mq.NewMQProducer(configConfig, logger)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
ragRepository := mq2.NewRAGRepository(mqProducer)
|
||||
userRepository := pg2.NewUserRepository(db, logger)
|
||||
ragService, err := rag.NewRAGService(configConfig, logger)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
knowledgeBaseRepository := pg2.NewKnowledgeBaseRepository(db, configConfig, logger, ragService)
|
||||
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)
|
||||
minioClient, err := s3.NewMinioClient(configConfig)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
cacheCache, err := cache.NewCache(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)
|
||||
kbRepo := cache2.NewKBRepo(cacheCache)
|
||||
knowledgeBaseUsecase, err := usecase.NewKnowledgeBaseUsecase(knowledgeBaseRepository, nodeRepository, navRepository, ragRepository, userRepository, ragService, kbRepo, logger, configConfig)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
migrationNodeVersion := fns.NewMigrationNodeVersion(logger, nodeUsecase, knowledgeBaseUsecase, ragRepository)
|
||||
migrationCreateBotAuth := fns.NewMigrationCreateBotAuth(logger)
|
||||
migrationFixGroupIds := fns.NewMigrationFixGroupIds(logger, ragRepository)
|
||||
migrationUpdateNodeStatusUnreleased := fns.NewMigrationUpdateNodeStatusUnreleased(logger)
|
||||
migrationCreateFirstNavs := fns.NewMigrationCreateFirstNavs(logger)
|
||||
migrationFuncs := &migration.MigrationFuncs{
|
||||
NodeMigration: migrationNodeVersion,
|
||||
BotAuthMigration: migrationCreateBotAuth,
|
||||
FixGroupIdsMigration: migrationFixGroupIds,
|
||||
UpdateNodeStatusUnreleasedMigration: migrationUpdateNodeStatusUnreleased,
|
||||
CreateFirstNavs: migrationCreateFirstNavs,
|
||||
}
|
||||
manager, err := migration.NewManager(db, logger, migrationFuncs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
app := &App{
|
||||
Config: configConfig,
|
||||
MigrationManager: manager,
|
||||
}
|
||||
return app, nil
|
||||
}
|
||||
|
||||
// wire.go:
|
||||
|
||||
type App struct {
|
||||
Config *config.Config
|
||||
MigrationManager *migration.Manager
|
||||
}
|
||||
Reference in New Issue
Block a user