package utils

import (
	"sync"

	"github.com/pingcap/dbaas/central/config"
	"github.com/sendgrid/sendgrid-go"
	mailv2 "github.com/tidbcloud/pkgv2/mail/v2"
)

var (
	once       sync.Once
	mailFacade mailv2.Facade
)

func InitMailFacade() {
	serverConfig := config.Global().ServerConfig

	sgCli := sendgrid.NewSendClient(serverConfig.SendgridApiKey)
	mailFacade = mailv2.NewMailProvider(nil, sgCli, config.SendgridTemplateName2id)
}

func GetMailFacade() mailv2.Facade {
	once.Do(func() {
		InitMailFacade()
	})

	return mailFacade
}
