package main import ( "context" "donat-widget/internal/app/http" "donat-widget/internal/config" ) import ( "donat-widget/infrastructure/pg" "donat-widget/infrastructure/weed" PaymentClient "donat-widget/pkg/api/payment" ) import ( DonatRepo "donat-widget/internal/repository/donat" TargetRepo "donat-widget/internal/repository/target" WidgetRepo "donat-widget/internal/repository/widget" DonatService "donat-widget/internal/service/donat" TargetService "donat-widget/internal/service/target" WidgetService "donat-widget/internal/service/widget" ) func main() { cfg := config.Init() // INFRASTRUCTURE db := pg.NewPgPool(context.Background(), cfg.Db.Username, cfg.Db.Password, cfg.Db.Host, cfg.Db.Port, cfg.Db.DBName) storage := weed.NewWeed(cfg.Storage.Filer, cfg.Storage.Master) // CLIENTS paymentClient := PaymentClient.New(cfg.PaymentService.Host, cfg.PaymentService.Port) // REPOSITORIES widgetRepo := WidgetRepo.New(db, storage) donatRepo := DonatRepo.New(db) targetRepo := TargetRepo.New(db) // SERVICES widgetService := WidgetService.New(widgetRepo, donatRepo) donatService := DonatService.New(donatRepo, widgetRepo, paymentClient) targetService := TargetService.New(targetRepo) http.NewApp( db, widgetService, donatService, targetService, ) }