优化结构
This commit is contained in:
+11
-8
@@ -8,7 +8,6 @@ import (
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"kra/internal/app"
|
||||
"kra/internal/config"
|
||||
"kra/internal/server/router"
|
||||
"kra/internal/service"
|
||||
@@ -50,13 +49,17 @@ func init() {
|
||||
flag.StringVar(&flagconf, "conf", "./configs", "config path, eg: -conf config.yaml")
|
||||
}
|
||||
|
||||
// runtimeContributions is the binary-level list of modules with constructed
|
||||
// route or task dependencies. Adding another runtime module is explicit here.
|
||||
func runtimeContributions(systemRoutes *router.Routes, systemTasks *worker.TaskMethods) app.Composition {
|
||||
return app.Composition{
|
||||
Routes: []module.RouteRegistrar{systemRoutes},
|
||||
Tasks: []platformtask.Contributor{systemTasks},
|
||||
}
|
||||
// taskRegistry builds the process-wide registry from the dependency-free task
|
||||
// methods the static module catalog declares. Methods whose handlers need
|
||||
// constructed usecases are added later by buildRuntime.
|
||||
func taskRegistry() *platformtask.Registry { return platformtask.NewRegistry() }
|
||||
|
||||
// buildRuntime is the binary-level list of modules with constructed route or
|
||||
// task dependencies: it activates their task methods and composes their routes.
|
||||
// Adding another runtime module is explicit here.
|
||||
func buildRuntime(registry *platformtask.Registry, systemRoutes *router.Routes, systemTasks *worker.TaskMethods) module.RouteRegistrar {
|
||||
systemTasks.RegisterTasks(registry)
|
||||
return systemRoutes
|
||||
}
|
||||
|
||||
func newApp(logger *slog.Logger, hs *kratoshttp.Server, scheduler *worker.TaskScheduler, audit *service.AuditRecorder, loggerControl *logging.ReloadableLogger, _ mq.Client) *kratos.App {
|
||||
|
||||
+2
-4
@@ -8,7 +8,6 @@ package main
|
||||
import (
|
||||
"log/slog"
|
||||
|
||||
"kra/internal/app"
|
||||
"kra/internal/biz"
|
||||
taskbiz "kra/internal/biz/task"
|
||||
"kra/internal/config"
|
||||
@@ -38,9 +37,8 @@ func wireApp(*config.Server, *config.Store, *slog.Logger, *logging.ReloadableLog
|
||||
router.ProviderSet,
|
||||
worker.ProviderSet,
|
||||
modules.Catalog,
|
||||
app.TaskRegistry,
|
||||
runtimeContributions,
|
||||
app.Build,
|
||||
taskRegistry,
|
||||
buildRuntime,
|
||||
data.ProviderSet,
|
||||
integration.ProviderSet,
|
||||
initialize.ProviderSet,
|
||||
|
||||
Generated
+5
-7
@@ -8,7 +8,6 @@ package main
|
||||
|
||||
import (
|
||||
"github.com/go-kratos/kratos/v3"
|
||||
"kra/internal/app"
|
||||
integration3 "kra/internal/biz/integration"
|
||||
payment2 "kra/internal/biz/payment"
|
||||
system2 "kra/internal/biz/system"
|
||||
@@ -75,6 +74,7 @@ func wireApp(configServer *config.Server, store *config.Store, logger *slog.Logg
|
||||
v2 := system3.NewSecurityService(securityUsecase)
|
||||
auditRecorderUsecase := system2.NewAuditRecorderUsecase(auditRecordRepo)
|
||||
v3 := system3.NewAuditRecorder(auditRecorderUsecase)
|
||||
registry := taskRegistry()
|
||||
authorityUsecase := system2.NewAuthorityUsecase(authorityAccessRepo)
|
||||
v4 := system3.NewAuthorityService(authorityUsecase)
|
||||
authority := handler.NewAuthority(v4)
|
||||
@@ -111,7 +111,6 @@ func wireApp(configServer *config.Server, store *config.Store, logger *slog.Logg
|
||||
v12 := payment3.NewPaymentService(paymentUsecase)
|
||||
handlerPayment := handler.NewPayment(v12)
|
||||
taskRepo := task.NewTaskRepo(dataData)
|
||||
registry := app.TaskRegistry(catalog)
|
||||
taskUsecase := task2.NewTaskUsecaseWithRegistry(taskRepo, registry)
|
||||
taskExecutor := worker.NewTaskExecutorWithRegistry(taskUsecase, registry)
|
||||
taskScheduler := worker.NewTaskScheduler(taskUsecase, authorityUsecase, taskExecutor, logger)
|
||||
@@ -192,14 +191,13 @@ func wireApp(configServer *config.Server, store *config.Store, logger *slog.Logg
|
||||
maintenanceRepo := system.NewMaintenanceRepo(dataData)
|
||||
maintenanceUsecase := system2.NewMaintenanceUsecase(maintenanceRepo)
|
||||
taskMethods := worker.NewTaskMethods(taskUsecase, maintenanceUsecase, mediaUsecase, store)
|
||||
composition := runtimeContributions(routes, taskMethods)
|
||||
runtime := app.Build(composition, registry)
|
||||
routeRegistrar := buildRuntime(registry, routes, taskMethods)
|
||||
websocketServer, cleanup2, err := websocket.New(runtimeconfigStore)
|
||||
if err != nil {
|
||||
cleanup()
|
||||
return nil, nil, err
|
||||
}
|
||||
engine := server.NewGinEngineWithRuntime(store, v, authService, v2, v3, logger, string2, runtime, websocketServer)
|
||||
engine := server.NewGinEngineWithRuntime(store, v, authService, v2, v3, logger, string2, routeRegistrar, websocketServer)
|
||||
httpServer := server.NewGinServer(configServer, engine)
|
||||
mqReloadable, cleanup3, err := mq.New(runtimeconfigStore, logger)
|
||||
if err != nil {
|
||||
@@ -207,8 +205,8 @@ func wireApp(configServer *config.Server, store *config.Store, logger *slog.Logg
|
||||
cleanup()
|
||||
return nil, nil, err
|
||||
}
|
||||
kratosApp := newApp(logger, httpServer, taskScheduler, v3, reloadableLogger, mqReloadable)
|
||||
return kratosApp, func() {
|
||||
app := newApp(logger, httpServer, taskScheduler, v3, reloadableLogger, mqReloadable)
|
||||
return app, func() {
|
||||
cleanup3()
|
||||
cleanup2()
|
||||
cleanup()
|
||||
|
||||
Reference in New Issue
Block a user