kra-new/cmd/wire.go

54 lines
1.3 KiB
Go

//go:build wireinject
// +build wireinject
// The build tag makes sure the stub is not built in the final build.
package main
import (
"log/slog"
"kra/internal/biz"
taskbiz "kra/internal/biz/task"
"kra/internal/config"
"kra/internal/data"
"kra/internal/initialize"
"kra/internal/integration"
"kra/internal/integration/cache"
"kra/internal/modules"
"kra/internal/server"
"kra/internal/server/handler"
"kra/internal/server/middleware"
"kra/internal/server/router"
"kra/internal/service"
"kra/internal/worker"
"kra/pkg/logging"
platformtask "kra/pkg/task"
"github.com/go-kratos/kratos/v3"
"github.com/google/wire"
)
// wireApp init kratos application.
func wireApp(*config.Server, *config.Store, *slog.Logger, *logging.ReloadableLogger, string) (*kratos.App, func(), error) {
panic(wire.Build(
server.ProviderSet,
handler.ProviderSet,
router.ProviderSet,
worker.ProviderSet,
modules.Catalog,
taskRegistry,
buildRuntime,
data.ProviderSet,
integration.ProviderSet,
initialize.ProviderSet,
wire.Bind(new(initialize.Backend), new(*data.Data)),
wire.Bind(new(cache.RedisProvider), new(*data.Data)),
wire.Bind(new(middleware.TokenAuthenticator), new(*service.AuthService)),
wire.Bind(new(taskbiz.TaskMethodRegistry), new(*platformtask.Registry)),
biz.ProviderSet,
service.ProviderSet,
newApp,
))
}