package main import ( "context" "donat-widget/infrastructure/sysStorage" "donat-widget/internal/app/http" "donat-widget/internal/config" "donat-widget/internal/docs" "donat-widget/pkg/logger" ) import ( "donat-widget/infrastructure/pg" //"donat-widget/infrastructure/weed" AuthClient "donat-widget/pkg/api/auth" PaymentClient "donat-widget/pkg/api/payment" StreamerClient "donat-widget/pkg/api/streamer" ) import ( DonatRepo "donat-widget/internal/repository/donat" FileRepo "donat-widget/internal/repository/file" TargetRepo "donat-widget/internal/repository/target" WidgetRepo "donat-widget/internal/repository/widget" DonatService "donat-widget/internal/service/donat" FileService "donat-widget/internal/service/file" TargetService "donat-widget/internal/service/target" WidgetService "donat-widget/internal/service/widget" ) // @title Donate Auth Documentation // @version 3.0 // @description Donate auth service docs. // @BasePath /api/widget // @securityDefinitions.apikey BearerAuth // @in header // @name Authorization func main() { logger.New() cfg := config.Init() docs.SwaggerInfo.Host = cfg.HOST // 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) storage := sysStorage.NewLocalStorage(cfg.Storage.Location, cfg.HOST) // CLIENTS paymentClient := PaymentClient.New(cfg.PaymentService.Host, cfg.PaymentService.Port) authClient := AuthClient.New(cfg.AuthService.Host, cfg.AuthService.Port) streamerClient := StreamerClient.New(cfg.StreamerService.Host, cfg.StreamerService.Port) // REPOSITORIES widgetRepo := WidgetRepo.New(db, storage) donatRepo := DonatRepo.New(db) targetRepo := TargetRepo.New(db) fileRepo := FileRepo.New(db, storage) // SERVICES widgetService := WidgetService.New( widgetRepo, authClient, fileRepo, storage, cfg.HOST, cfg.TtsHost, ) targetService := TargetService.New(targetRepo, authClient) fileService := FileService.New(authClient, fileRepo, storage) donatService := DonatService.New( donatRepo, widgetRepo, paymentClient, authClient, streamerClient, fileRepo, fileService, storage, ) http.NewApp( db, widgetService, donatService, targetService, fileService, authClient, ) }