package metrics

import (
	"context"
	"encoding/json"

	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/service/sqs"
	"github.com/tidbcloud/account/central/utils"
	"github.com/tidbcloud/account/commons/config"
	"github.com/tidbcloud/tiinf/monitor/tilog"
	"go.uber.org/zap"
)

type loginEvent struct {
	Uid       uint64 `json:"uid"`
	LoginDate string `json:"loginDate"`
	MsgType   string `json:"msgType"`
}

func SendToUserEventSQS(u loginEvent) {
	ctx := context.Background()

	data, _ := json.Marshal(u)

	message := string(data)
	sqsUrl := config.Global().MarketPlaceConfig.AWSUserEventSQS
	sendParams := &sqs.SendMessageInput{
		MessageBody:  aws.String(message),
		QueueUrl:     aws.String(sqsUrl),
		DelaySeconds: aws.Int64(3),
	}
	sqsSvc := utils.GetUserEventSQSSingleton()
	_, err := sqsSvc.SendMessage(sendParams)
	tilog.Info(ctx, "will send SQS message : ", zap.String("value=", message))
	if err != nil {
		tilog.Error(ctx, "send SQS message error:"+err.Error())
	}
}
