//go:build wireinject
// +build wireinject

package main

import (
	"github.com/google/wire"
	"github.com/tidbcloud/ecosystem-service/api"
	"github.com/tidbcloud/ecosystem-service/config"
	github2 "github.com/tidbcloud/ecosystem-service/internal/service/github"
	"github.com/tidbcloud/ecosystem-service/internal/service/grpc"
	vercelProxy "github.com/tidbcloud/ecosystem-service/internal/service/proxy/vercel"
	"github.com/tidbcloud/ecosystem-service/internal/storage/db"
	gitDB "github.com/tidbcloud/ecosystem-service/internal/storage/db/git"
	vercelDB "github.com/tidbcloud/ecosystem-service/internal/storage/db/vercel"
	"github.com/tidbcloud/ecosystem-service/internal/utils"
	"github.com/tidbcloud/ecosystem-service/internal/worker"
)

var providerSet = wire.NewSet(
	utils.InitLogger,
	utils.InitEncryptor,
	grpc.GrpcProvider,
	db.InitializeDB,
	config.InitConfig,
	gitDB.GitDAOSet,
	github2.NewGitHubApp,
	worker.WorkerSet,
	vercelDB.VercelDAOSet,
	api.LogicSet,
	vercelProxy.NewAPIClient,
)

func initializeWorker(configPath string, localMode bool) (*worker.GlobalWorker, error) {
	panic(wire.Build(providerSet, worker.NewGlobalWorker))
}
