|
|
|
|
@@ -43,6 +43,7 @@ func initializeApplication(buildInfo handler.BuildInfo) (*Application, error) {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
userRepository := repository.NewUserRepository(client, db)
|
|
|
|
|
redeemCodeRepository := repository.NewRedeemCodeRepository(client)
|
|
|
|
|
settingRepository := repository.NewSettingRepository(client)
|
|
|
|
|
settingService := service.NewSettingService(settingRepository, configConfig)
|
|
|
|
|
redisClient := repository.ProvideRedis(configConfig)
|
|
|
|
|
@@ -61,20 +62,29 @@ func initializeApplication(buildInfo handler.BuildInfo) (*Application, error) {
|
|
|
|
|
apiKeyService := service.NewAPIKeyService(apiKeyRepository, userRepository, groupRepository, userSubscriptionRepository, apiKeyCache, configConfig)
|
|
|
|
|
apiKeyAuthCacheInvalidator := service.ProvideAPIKeyAuthCacheInvalidator(apiKeyService)
|
|
|
|
|
promoService := service.NewPromoService(promoCodeRepository, userRepository, billingCacheService, client, apiKeyAuthCacheInvalidator)
|
|
|
|
|
authService := service.NewAuthService(userRepository, configConfig, settingService, emailService, turnstileService, emailQueueService, promoService)
|
|
|
|
|
authService := service.NewAuthService(userRepository, redeemCodeRepository, configConfig, settingService, emailService, turnstileService, emailQueueService, promoService)
|
|
|
|
|
userService := service.NewUserService(userRepository, apiKeyAuthCacheInvalidator)
|
|
|
|
|
authHandler := handler.NewAuthHandler(configConfig, authService, userService, settingService, promoService)
|
|
|
|
|
subscriptionService := service.NewSubscriptionService(groupRepository, userSubscriptionRepository, billingCacheService)
|
|
|
|
|
redeemCache := repository.NewRedeemCache(redisClient)
|
|
|
|
|
redeemService := service.NewRedeemService(redeemCodeRepository, userRepository, subscriptionService, redeemCache, billingCacheService, client, apiKeyAuthCacheInvalidator)
|
|
|
|
|
secretEncryptor, err := repository.NewAESEncryptor(configConfig)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
totpCache := repository.NewTotpCache(redisClient)
|
|
|
|
|
totpService := service.NewTotpService(userRepository, secretEncryptor, totpCache, settingService, emailService, emailQueueService)
|
|
|
|
|
authHandler := handler.NewAuthHandler(configConfig, authService, userService, settingService, promoService, redeemService, totpService)
|
|
|
|
|
userHandler := handler.NewUserHandler(userService)
|
|
|
|
|
apiKeyHandler := handler.NewAPIKeyHandler(apiKeyService)
|
|
|
|
|
usageLogRepository := repository.NewUsageLogRepository(client, db)
|
|
|
|
|
usageService := service.NewUsageService(usageLogRepository, userRepository, client, apiKeyAuthCacheInvalidator)
|
|
|
|
|
usageHandler := handler.NewUsageHandler(usageService, apiKeyService)
|
|
|
|
|
redeemCodeRepository := repository.NewRedeemCodeRepository(client)
|
|
|
|
|
subscriptionService := service.NewSubscriptionService(groupRepository, userSubscriptionRepository, billingCacheService)
|
|
|
|
|
redeemCache := repository.NewRedeemCache(redisClient)
|
|
|
|
|
redeemService := service.NewRedeemService(redeemCodeRepository, userRepository, subscriptionService, redeemCache, billingCacheService, client, apiKeyAuthCacheInvalidator)
|
|
|
|
|
redeemHandler := handler.NewRedeemHandler(redeemService)
|
|
|
|
|
subscriptionHandler := handler.NewSubscriptionHandler(subscriptionService)
|
|
|
|
|
announcementRepository := repository.NewAnnouncementRepository(client)
|
|
|
|
|
announcementReadRepository := repository.NewAnnouncementReadRepository(client)
|
|
|
|
|
announcementService := service.NewAnnouncementService(announcementRepository, announcementReadRepository, userRepository, userSubscriptionRepository)
|
|
|
|
|
announcementHandler := handler.NewAnnouncementHandler(announcementService)
|
|
|
|
|
dashboardAggregationRepository := repository.NewDashboardAggregationRepository(db)
|
|
|
|
|
dashboardStatsCache := repository.NewDashboardCache(redisClient, configConfig)
|
|
|
|
|
dashboardService := service.NewDashboardService(usageLogRepository, dashboardAggregationRepository, dashboardStatsCache, configConfig)
|
|
|
|
|
@@ -123,6 +133,7 @@ func initializeApplication(buildInfo handler.BuildInfo) (*Application, error) {
|
|
|
|
|
crsSyncService := service.NewCRSSyncService(accountRepository, proxyRepository, oAuthService, openAIOAuthService, geminiOAuthService, configConfig)
|
|
|
|
|
sessionLimitCache := repository.ProvideSessionLimitCache(redisClient, configConfig)
|
|
|
|
|
accountHandler := admin.NewAccountHandler(adminService, oAuthService, openAIOAuthService, geminiOAuthService, antigravityOAuthService, rateLimitService, accountUsageService, accountTestService, concurrencyService, crsSyncService, sessionLimitCache, compositeTokenCacheInvalidator)
|
|
|
|
|
adminAnnouncementHandler := admin.NewAnnouncementHandler(announcementService)
|
|
|
|
|
oAuthHandler := admin.NewOAuthHandler(oAuthService)
|
|
|
|
|
openAIOAuthHandler := admin.NewOpenAIOAuthHandler(openAIOAuthService, adminService)
|
|
|
|
|
geminiOAuthHandler := admin.NewGeminiOAuthHandler(geminiOAuthService)
|
|
|
|
|
@@ -162,15 +173,16 @@ func initializeApplication(buildInfo handler.BuildInfo) (*Application, error) {
|
|
|
|
|
userAttributeValueRepository := repository.NewUserAttributeValueRepository(client)
|
|
|
|
|
userAttributeService := service.NewUserAttributeService(userAttributeDefinitionRepository, userAttributeValueRepository)
|
|
|
|
|
userAttributeHandler := admin.NewUserAttributeHandler(userAttributeService)
|
|
|
|
|
adminHandlers := handler.ProvideAdminHandlers(dashboardHandler, adminUserHandler, groupHandler, accountHandler, oAuthHandler, openAIOAuthHandler, geminiOAuthHandler, antigravityOAuthHandler, proxyHandler, adminRedeemHandler, promoHandler, settingHandler, opsHandler, systemHandler, adminSubscriptionHandler, adminUsageHandler, userAttributeHandler)
|
|
|
|
|
gatewayHandler := handler.NewGatewayHandler(gatewayService, geminiMessagesCompatService, antigravityGatewayService, userService, concurrencyService, billingCacheService, configConfig)
|
|
|
|
|
adminHandlers := handler.ProvideAdminHandlers(dashboardHandler, adminUserHandler, groupHandler, accountHandler, adminAnnouncementHandler, oAuthHandler, openAIOAuthHandler, geminiOAuthHandler, antigravityOAuthHandler, proxyHandler, adminRedeemHandler, promoHandler, settingHandler, opsHandler, systemHandler, adminSubscriptionHandler, adminUsageHandler, userAttributeHandler)
|
|
|
|
|
gatewayHandler := handler.NewGatewayHandler(gatewayService, geminiMessagesCompatService, antigravityGatewayService, userService, concurrencyService, billingCacheService, usageService, configConfig)
|
|
|
|
|
openAIGatewayHandler := handler.NewOpenAIGatewayHandler(openAIGatewayService, concurrencyService, billingCacheService, configConfig)
|
|
|
|
|
soraDirectClient := service.NewSoraDirectClient(configConfig, httpUpstream, openAITokenProvider)
|
|
|
|
|
soraMediaStorage := service.ProvideSoraMediaStorage(configConfig)
|
|
|
|
|
soraGatewayService := service.NewSoraGatewayService(soraDirectClient, soraMediaStorage, rateLimitService, configConfig)
|
|
|
|
|
soraGatewayHandler := handler.NewSoraGatewayHandler(gatewayService, soraGatewayService, concurrencyService, billingCacheService, configConfig)
|
|
|
|
|
handlerSettingHandler := handler.ProvideSettingHandler(settingService, buildInfo)
|
|
|
|
|
handlers := handler.ProvideHandlers(authHandler, userHandler, apiKeyHandler, usageHandler, redeemHandler, subscriptionHandler, adminHandlers, gatewayHandler, openAIGatewayHandler, soraGatewayHandler, handlerSettingHandler)
|
|
|
|
|
totpHandler := handler.NewTotpHandler(totpService)
|
|
|
|
|
handlers := handler.ProvideHandlers(authHandler, userHandler, apiKeyHandler, usageHandler, redeemHandler, subscriptionHandler, announcementHandler, adminHandlers, gatewayHandler, openAIGatewayHandler, soraGatewayHandler, handlerSettingHandler, totpHandler)
|
|
|
|
|
jwtAuthMiddleware := middleware.NewJWTAuthMiddleware(authService, userService)
|
|
|
|
|
adminAuthMiddleware := middleware.NewAdminAuthMiddleware(authService, userService, settingService)
|
|
|
|
|
apiKeyAuthMiddleware := middleware.NewAPIKeyAuthMiddleware(apiKeyService, subscriptionService, configConfig)
|
|
|
|
|
@@ -182,9 +194,10 @@ func initializeApplication(buildInfo handler.BuildInfo) (*Application, error) {
|
|
|
|
|
opsCleanupService := service.ProvideOpsCleanupService(opsRepository, db, redisClient, configConfig)
|
|
|
|
|
opsScheduledReportService := service.ProvideOpsScheduledReportService(opsService, userService, emailService, redisClient, configConfig)
|
|
|
|
|
soraMediaCleanupService := service.ProvideSoraMediaCleanupService(soraMediaStorage, configConfig)
|
|
|
|
|
tokenRefreshService := service.ProvideTokenRefreshService(accountRepository, soraAccountRepository, oAuthService, openAIOAuthService, geminiOAuthService, antigravityOAuthService, compositeTokenCacheInvalidator, configConfig)
|
|
|
|
|
tokenRefreshService := service.ProvideTokenRefreshService(accountRepository, soraAccountRepository, oAuthService, openAIOAuthService, geminiOAuthService, antigravityOAuthService, compositeTokenCacheInvalidator, schedulerCache, configConfig)
|
|
|
|
|
accountExpiryService := service.ProvideAccountExpiryService(accountRepository)
|
|
|
|
|
v := provideCleanup(client, redisClient, opsMetricsCollector, opsAggregationService, opsAlertEvaluatorService, opsCleanupService, opsScheduledReportService, soraMediaCleanupService, schedulerSnapshotService, tokenRefreshService, accountExpiryService, usageCleanupService, pricingService, emailQueueService, billingCacheService, oAuthService, openAIOAuthService, geminiOAuthService, antigravityOAuthService)
|
|
|
|
|
subscriptionExpiryService := service.ProvideSubscriptionExpiryService(userSubscriptionRepository)
|
|
|
|
|
v := provideCleanup(client, redisClient, opsMetricsCollector, opsAggregationService, opsAlertEvaluatorService, opsCleanupService, opsScheduledReportService, soraMediaCleanupService, schedulerSnapshotService, tokenRefreshService, accountExpiryService, subscriptionExpiryService, usageCleanupService, pricingService, emailQueueService, billingCacheService, oAuthService, openAIOAuthService, geminiOAuthService, antigravityOAuthService)
|
|
|
|
|
application := &Application{
|
|
|
|
|
Server: httpServer,
|
|
|
|
|
Cleanup: v,
|
|
|
|
|
@@ -218,6 +231,7 @@ func provideCleanup(
|
|
|
|
|
schedulerSnapshot *service.SchedulerSnapshotService,
|
|
|
|
|
tokenRefresh *service.TokenRefreshService,
|
|
|
|
|
accountExpiry *service.AccountExpiryService,
|
|
|
|
|
subscriptionExpiry *service.SubscriptionExpiryService,
|
|
|
|
|
usageCleanup *service.UsageCleanupService,
|
|
|
|
|
pricing *service.PricingService,
|
|
|
|
|
emailQueue *service.EmailQueueService,
|
|
|
|
|
@@ -291,6 +305,10 @@ func provideCleanup(
|
|
|
|
|
accountExpiry.Stop()
|
|
|
|
|
return nil
|
|
|
|
|
}},
|
|
|
|
|
{"SubscriptionExpiryService", func() error {
|
|
|
|
|
subscriptionExpiry.Stop()
|
|
|
|
|
return nil
|
|
|
|
|
}},
|
|
|
|
|
{"PricingService", func() error {
|
|
|
|
|
pricing.Stop()
|
|
|
|
|
return nil
|
|
|
|
|
|