file-system/cmd/server/wire_gen.go
向宁 42addaea7d feat: add Wire DI and rewrite main.go as Kratos app entry point
- Create wire.go with interface bindings (biz interfaces → data implementations)
- Rewrite main.go to use Kratos config loading + Wire-generated initApp
- Remove temporary deps.go pinning file
- Wire generates complete dependency graph: config → data → biz → service → server → app
2026-05-25 13:12:18 +08:00

64 lines
2.1 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/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"
)
// Injectors from wire.go:
// initApp wires up the entire dependency graph.
func initApp(bootstrap *conf.Bootstrap, logger log.Logger) (*kratos.App, func(), error) {
confServer := newConfServer(bootstrap)
confData := newConfData(bootstrap)
fileRepo := data.NewFileRepo(confData)
fileUsecase := biz.NewFileUsecase(fileRepo, logger)
bucketUsecase := biz.NewBucketUsecase(fileRepo, logger)
dataData, cleanup, err := data.NewData(confData, logger)
if err != nil {
return nil, nil, err
}
folderRepo := data.NewFolderRepo(dataData, logger)
fileMetaRepo := data.NewFileMetaRepo(dataData, logger)
folderUsecase := biz.NewFolderUsecase(folderRepo, fileMetaRepo, fileRepo, logger)
shareRepo := data.NewShareRepo(dataData, logger)
shareUsecase := biz.NewShareUsecase(shareRepo, fileMetaRepo, fileRepo, logger)
fileService := service.NewFileService(fileUsecase, bucketUsecase, folderUsecase, shareUsecase, logger)
httpServer := server.NewHTTPServer(confServer, fileService, logger)
grpcServer := server.NewGRPCServer(confServer, fileService, logger)
app := newApp(logger, httpServer, grpcServer)
return app, func() {
cleanup()
}, nil
}
// wire.go:
// 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))
}
// 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()
}