package service

// snippet-start:[sqs.go.create_queue.imports]
import (
	"fmt"

	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/session"
	sqs "github.com/aws/aws-sdk-go/service/sqs"
	"github.com/pingcap/log"
)

func (svc *apiService) CreateSqs(sqsName string) (string, error) {
	log.Debug(fmt.Sprintf("create sqs queue, %s", sqsName))
	sess := session.Must(session.NewSessionWithOptions(session.Options{
		SharedConfigState: session.SharedConfigEnable,
	}))
	sqsCli := sqs.New(sess)

	result, err := sqsCli.CreateQueue(&sqs.CreateQueueInput{
		QueueName: &sqsName,
		Attributes: map[string]*string{
			"DelaySeconds":           aws.String("60"),
			"MessageRetentionPeriod": aws.String("86400"),
		},
	})
	if err != nil {
		log.Error(fmt.Sprintf("create queue failed, %s", err))
		return "", err
	}
	return *result.QueueUrl, nil
}

func (svc *apiService) DeleteSqs(endpoint string) error {
	log.Debug(fmt.Sprintf("delete sqs topic, %s", endpoint))
	sess := session.Must(session.NewSessionWithOptions(session.Options{
		SharedConfigState: session.SharedConfigEnable,
	}))
	sqsCli := sqs.New(sess)

	_, err := sqsCli.DeleteQueue(&sqs.DeleteQueueInput{
		QueueUrl: &endpoint,
	})
	if err != nil {
		log.Error(fmt.Sprintf("create queue failed, %s", err))
		return err
	}
	return nil
}
