// 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 ( "database/sql" "github.com/go-kratos/kratos/v2" "github.com/go-kratos/kratos/v2/log" "github.com/go-kratos/kratos/v2/transport/grpc" "github.com/go-kratos/kratos/v2/transport/http" "rag/file-system/internal/biz" "rag/file-system/internal/conf" "rag/file-system/internal/data" "rag/file-system/internal/server" "rag/file-system/internal/service" "rag/file-system/internal/watermark" ) // Injectors from wire.go: // initApp wires up the entire dependency graph. func initApp(bootstrap *conf.Bootstrap, logger log.Logger) (*appContext, func(), error) { confServer := newConfServer(bootstrap) auth := newConfAuth(bootstrap) confData := newConfData(bootstrap) fileRepo := data.NewFileRepo(confData) dataData, cleanup, err := data.NewData(confData, logger) if err != nil { return nil, nil, err } db, err := newSQLDB(dataData) if err != nil { cleanup() return nil, nil, err } cqrsHandler := watermark.NewCQRSHandler(logger) cqrsBus, err := watermark.NewCQRSBusWithHandlers(db, cqrsHandler, logger) if err != nil { cleanup() return nil, nil, err } eventBusPublisher := watermark.NewEventBusPublisher(cqrsBus) fileUsecase := biz.NewFileUsecase(fileRepo, eventBusPublisher, logger) bucketUsecase := biz.NewBucketUsecase(fileRepo, logger) folderRepo := data.NewFolderRepo(dataData, logger) fileMetaRepo := data.NewFileMetaRepo(dataData, logger) folderUsecase := biz.NewFolderUsecase(folderRepo, fileMetaRepo, fileRepo, eventBusPublisher, logger) shareRepo := data.NewShareRepo(dataData, logger) shareUsecase := biz.NewShareUsecase(shareRepo, fileMetaRepo, fileRepo, eventBusPublisher, logger) fileService := service.NewFileService(fileUsecase, bucketUsecase, folderUsecase, shareUsecase, logger) httpServer := server.NewHTTPServer(confServer, auth, fileService, logger) grpcServer := server.NewGRPCServer(confServer, auth, fileService, logger) app := newApp(logger, httpServer, grpcServer) mainAppContext := newAppContext(app, cqrsBus) return mainAppContext, func() { cleanup() }, nil } // wire.go: // appContext holds the Kratos app and CQRS bus together for Wire. type appContext struct { App *kratos.App CQRSBus *watermark.CQRSBus } // newApp creates a new Kratos application with HTTP and gRPC servers. func newApp(logger log.Logger, hs *http.Server, gs *grpc.Server) *kratos.App { return kratos.New(kratos.Name("file-system"), kratos.Logger(logger), kratos.Server(hs, gs)) } // newAppContext wraps the app and CQRSBus into an appContext. func newAppContext(app *kratos.App, bus *watermark.CQRSBus) *appContext { return &appContext{App: app, CQRSBus: bus} } // newConfServer extracts the Server config from Bootstrap. func newConfServer(bc *conf.Bootstrap) *conf.Server { return bc.GetServer() } // newConfData extracts the Data config from Bootstrap. func newConfData(bc *conf.Bootstrap) *conf.Data { return bc.GetData() } // newConfAuth extracts the Auth config from Bootstrap. func newConfAuth(bc *conf.Bootstrap) *conf.Auth { return bc.GetAuth() } // newSQLDB extracts the underlying *sql.DB from Data for Watermill. func newSQLDB(d *data.Data) (*sql.DB, error) { return d.SqlDB() }