import
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
package main
|
||||
|
||||
// fx.Module — модульный монолит с Fx.
|
||||
//
|
||||
// Каждый бизнес-домен живёт в своём файле:
|
||||
// infra.go — БД, кэш, шина событий (общая инфраструктура)
|
||||
// auth_module.go — авторизация: сессии + проверка токенов
|
||||
// user_module.go — профили пользователей
|
||||
// notification_module.go — уведомления
|
||||
// api.go — HTTP-хендлер и сервер
|
||||
//
|
||||
// Зачем это нужно:
|
||||
// Команда авторизации добавляет TokenValidator → правит ТОЛЬКО auth_module.go.
|
||||
// main.go не трогает. Конфликтов при мерже с командой уведомлений — ноль.
|
||||
//
|
||||
// Без fx.Module все провайдеры в одном main.go. Три команды правят один файл.
|
||||
// Мерж-конфликты на каждом PR.
|
||||
//
|
||||
// Сравните с cmd/fx-di-shared/ — тот же код, но всё в одном файле.
|
||||
|
||||
import "go.uber.org/fx"
|
||||
|
||||
func main() {
|
||||
fx.New(
|
||||
// Общая инфраструктура
|
||||
InfraModule,
|
||||
|
||||
// Бизнес-домены — каждая команда владеет своим файлом.
|
||||
// Добавить новый домен = новый файл + одна строка здесь.
|
||||
AuthModule,
|
||||
UserModule,
|
||||
NotificationModule,
|
||||
|
||||
// API — собирает сервисы в HTTP-хендлер
|
||||
APIModule,
|
||||
).Run()
|
||||
}
|
||||
Reference in New Issue
Block a user