package utils

import (
	"context"
	"sync"

	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/session"
	"github.com/aws/aws-sdk-go/service/sqs"
	"github.com/tidbcloud/account/commons/config"
	"github.com/tidbcloud/tiinf/monitor/tilog"
)

var userEventSimpleSQSObj *sqs.SQS
var userEventOnce sync.Once

func GetUserEventSQSSingleton() *sqs.SQS {
	userEventOnce.Do(func() {
		region := config.Global().JobQueueConfig.JobQueueRegion
		sess := session.Must(session.NewSessionWithOptions(session.Options{
			Config: aws.Config{
				Region: &region,
			},
			SharedConfigState: session.SharedConfigStateFromEnv,
		}))
		userEventSimpleSQSObj = sqs.New(sess)
		tilog.Info(context.Background(), "init user Event SQS client obj success")
	})
	return userEventSimpleSQSObj
}
