feat: 引入dig服务依赖管理
This commit is contained in:
87
internal/container/container.go
Normal file
87
internal/container/container.go
Normal file
@@ -0,0 +1,87 @@
|
||||
// Package container provides a dependency injection container for the application.
|
||||
package container
|
||||
|
||||
import (
|
||||
"gpt-load/internal/app"
|
||||
"gpt-load/internal/channel"
|
||||
"gpt-load/internal/config"
|
||||
"gpt-load/internal/db"
|
||||
"gpt-load/internal/handler"
|
||||
"gpt-load/internal/proxy"
|
||||
"gpt-load/internal/router"
|
||||
"gpt-load/internal/services"
|
||||
"gpt-load/internal/store"
|
||||
|
||||
"go.uber.org/dig"
|
||||
)
|
||||
|
||||
// BuildContainer creates a new dependency injection container and provides all the application's services.
|
||||
func BuildContainer() (*dig.Container, error) {
|
||||
container := dig.New()
|
||||
|
||||
// Infrastructure Services
|
||||
if err := container.Provide(config.NewManager); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := container.Provide(db.NewDB); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := container.Provide(config.NewSystemSettingsManager); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := container.Provide(store.NewStore); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := container.Provide(channel.NewFactory); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Business Services
|
||||
if err := container.Provide(services.NewTaskService); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := container.Provide(services.NewKeyValidatorService); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := container.Provide(services.NewKeyValidationPool); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := container.Provide(services.NewKeyManualValidationService); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := container.Provide(services.NewKeyCronService); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := container.Provide(services.NewKeyService); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := container.Provide(services.NewLogCleanupService); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Handlers
|
||||
if err := container.Provide(handler.NewServer); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := container.Provide(handler.NewLogCleanupHandler); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := container.Provide(handler.NewCommonHandler); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Proxy & Router
|
||||
if err := container.Provide(proxy.NewProxyServer); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := container.Provide(router.NewRouter); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Application Layer
|
||||
if err := container.Provide(app.NewApp); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return container, nil
|
||||
}
|
Reference in New Issue
Block a user