// app/gosqs/build.go // Общие билдеры очереди и сообщения — чтобы admin/UI-путь создавал объекты // ровно так же, как SQS API (единый путь, без расхождения дефолтов). package gosqs import ( "time" "github.com/google/uuid" "shared-sqs/app/models" "shared-sqs/app/tenant" "shared-sqs/app/utils" ) // BuildQueueForTenant — создаёт очередь тенанта с теми же URL/ARN/дефолтами и // FIFO-детектом, что и CreateQueueV1. Используется admin-хендлерами, чтобы // поведение UI совпадало с SQS API (URL/ARN заполнены, .fifo → IsFIFO). func BuildQueueForTenant(t *tenant.Tenant, queueName string) *models.Queue { return &models.Queue{ Name: queueName, URL: tenantQueueURL(t, queueName), Arn: tenantQueueARN(t, queueName), VisibilityTimeout: 30, MaximumMessageSize: MaxMessageSizeDefault, MessageRetentionPeriod: 345600, // 4 дня IsFIFO: utils.HasFIFOQueueName(queueName), EnableDuplicates: models.CurrentEnvironment.EnableDuplicates, Messages: []models.SqsMessage{}, Duplicates: make(map[string]time.Time), } } // BuildSqsMessage — создаёт сообщение с UUID, MD5 тела и временем отправки — // так же, как это делает SendMessageV1 (для admin/UI-пути). func BuildSqsMessage(body string) models.SqsMessage { return models.SqsMessage{ MessageBody: body, Uuid: uuid.NewString(), MD5OfMessageBody: utils.GetMD5Hash(body), SentTime: time.Now(), } }