Files
di-container/cmd/fx-di-modules/main.go
T

38 lines
1.6 KiB
Go
Raw Normal View History

2026-04-13 08:14:09 +03:00
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()
}