private def impl()

in handlers/product-move-api/src/main/scala/com/gu/productmove/SQS.scala [185:248]


  private def impl(creds: AwsCredentialsProvider): Try[SqsClient] =
    Try(
      SqsClient.builder
        .region(Region.EU_WEST_1)
        .credentialsProvider(creds)
        .build(),
    )
}

sealed trait EmailPayloadAttributes

case class toRCEmailPayloadProductSwitchAttributes(
    first_name: String,
    last_name: String,
    start_date: String,
    price: String,
    payment_frequency: String,
    currency: String,
    subscription_id: String,
) extends EmailPayloadAttributes
    derives JsonEncoder

case class RCtoSPEmailPayloadProductSwitchAttributes(
    first_name: String,
    last_name: String,
    first_payment_amount: String,
    date_of_first_payment: String,
    price: String,
    payment_frequency: String,
    currency: String,
    subscription_id: String,
) extends EmailPayloadAttributes
    derives JsonEncoder

case class EmailPayloadCancellationAttributes(
    first_name: String,
    last_name: String,
    product_type: String,
    cancellation_effective_date: Option[String],
) extends EmailPayloadAttributes
    derives JsonEncoder

case class EmailPayloadUpdateAmountAttributes(
    first_name: String,
    last_name: String,
    new_amount: String,
    currency: String,
    frequency: String,
    next_payment_date: String,
) extends EmailPayloadAttributes
    derives JsonEncoder

case class EmailPayloadContactAttributes(SubscriberAttributes: EmailPayloadAttributes) derives JsonEncoder

case class EmailPayload(Address: Option[String], ContactAttributes: EmailPayloadContactAttributes) derives JsonEncoder

case class EmailMessage(
    To: EmailPayload,
    DataExtensionName: String,
    SfContactId: String,
    IdentityUserId: Option[IdentityId],
) derives JsonEncoder

object EmailMessage {