import
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
//go:build wireinject
|
||||
|
||||
package main
|
||||
|
||||
import "github.com/google/wire"
|
||||
|
||||
// InitializeEventBus — попытка собрать граф с циклической зависимостью.
|
||||
//
|
||||
// EventBus → NotificationService → UserService → AuthService → EventBus
|
||||
//
|
||||
// Wire сделает топологическую сортировку, обнаружит цикл и упадёт.
|
||||
// Ленивой инициализации нет — Wire должен знать порядок создания заранее.
|
||||
// А при цикле порядка не существует.
|
||||
//
|
||||
// Запустите: task generate-wire-broken
|
||||
// Результат: "cycle for *EventBus"
|
||||
func InitializeEventBus() (*EventBus, error) {
|
||||
wire.Build(
|
||||
NewEventBus,
|
||||
NewAuthService,
|
||||
NewUserService,
|
||||
NewNotificationService,
|
||||
|
||||
wire.Bind(new(NotificationSender), new(*NotificationService)),
|
||||
wire.Bind(new(EventPublisher), new(*EventBus)),
|
||||
wire.Bind(new(EventSubscriber), new(*EventBus)),
|
||||
wire.Bind(new(Auth), new(*AuthService)),
|
||||
wire.Bind(new(Users), new(*UserService)),
|
||||
)
|
||||
|
||||
return nil, nil
|
||||
}
|
||||
Reference in New Issue
Block a user