// Code generated by Wire. DO NOT EDIT.

//go:generate go run -mod=mod github.com/google/wire/cmd/wire
//go:build !wireinject
// +build !wireinject

package main

import (
	"github.com/google/wire"
	"github.com/tidbcloud/ecosystem-service/api"
	vercel3 "github.com/tidbcloud/ecosystem-service/api/v1/vercel"
	"github.com/tidbcloud/ecosystem-service/config"
	"github.com/tidbcloud/ecosystem-service/internal/service/github"
	"github.com/tidbcloud/ecosystem-service/internal/service/grpc"
	"github.com/tidbcloud/ecosystem-service/internal/service/grpc/branch"
	vercel2 "github.com/tidbcloud/ecosystem-service/internal/service/proxy/vercel"
	"github.com/tidbcloud/ecosystem-service/internal/storage/db"
	"github.com/tidbcloud/ecosystem-service/internal/storage/db/git"
	"github.com/tidbcloud/ecosystem-service/internal/storage/db/vercel"
	"github.com/tidbcloud/ecosystem-service/internal/utils"
	"github.com/tidbcloud/ecosystem-service/internal/worker"
	"github.com/tidbcloud/ecosystem-service/internal/worker/github_app"
	"github.com/tidbcloud/ecosystem-service/internal/worker/vercel_webhook"
)

// Injectors from wire.go:

func initializeWorker(configPath string, localMode2 bool) (*worker.GlobalWorker, error) {
	configWrapper, err := config.InitConfig(configPath)
	if err != nil {
		return nil, err
	}
	gormDB, err := db.InitializeDB(configWrapper)
	if err != nil {
		return nil, err
	}
	gitHubAppTaskDAO := git.NewGitHubAppTaskDAO(gormDB)
	tiDBGitIntegrationDAO := git.NewTiDBGitIntegrationDAO(gormDB)
	branchSvc := branch.NewBranchSvc(configWrapper)
	gitHubApp := github.NewGitHubApp(tiDBGitIntegrationDAO, configWrapper, branchSvc, gitHubAppTaskDAO)
	gitHubAppWorker := github_app.NewGitHubAppWorker(gitHubAppTaskDAO, gitHubApp, configWrapper)
	gitHubAppCleanWorker := github_app.NewGitHubAppCleanWorker(gitHubAppTaskDAO)
	gitHubAppMetricWorker := github_app.NewGitHubAppMetricWorker(gitHubAppTaskDAO, tiDBGitIntegrationDAO)
	branchTaskDAO := vercel.NewBranchTaskDAO(gormDB)
	clusterConnectionDAO := vercel.NewClusterConnectionDAO(gormDB)
	checkDAO := vercel.NewXCheckDAO(gormDB)
	vercelIntegrationConfigurationDAO := vercel.NewVercelIntegrationConfigurationDAO(gormDB)
	apiClient := vercel2.NewAPIClient()
	branchEnvironmentIdentifierDAO := vercel.NewBranchEnvironmentIdentifierDAO(gormDB)
	branchLogic := vercel3.NewBranchLogic(clusterConnectionDAO, checkDAO, vercelIntegrationConfigurationDAO, apiClient, branchSvc, configWrapper, branchEnvironmentIdentifierDAO, branchTaskDAO)
	vercelWebhookWorker := vercel_webhook.NewVercelWebhookWorker(branchTaskDAO, branchLogic, branchSvc, apiClient, checkDAO, configWrapper, clusterConnectionDAO, branchEnvironmentIdentifierDAO)
	vercelWebhookMetricWorker := vercel_webhook.NewVercelWebhookMetricWorker(branchTaskDAO)
	vercelWebhookCleanWorker := vercel_webhook.NewVercelWebhookCleanWorker(branchTaskDAO)
	logger := utils.InitLogger(configWrapper)
	globalWorker := worker.NewGlobalWorker(gitHubAppWorker, gitHubAppCleanWorker, gitHubAppMetricWorker, vercelWebhookWorker, vercelWebhookMetricWorker, vercelWebhookCleanWorker, logger)
	return globalWorker, nil
}

// wire.go:

var providerSet = wire.NewSet(utils.InitLogger, utils.InitEncryptor, grpc.GrpcProvider, db.InitializeDB, config.InitConfig, git.GitDAOSet, github.NewGitHubApp, worker.WorkerSet, vercel.VercelDAOSet, api.LogicSet, vercel2.NewAPIClient)
