def apply()

in src/main/scala/payment_failure_comms/SalesforceConnector.scala [32:102]


  def apply(sfConfig: SalesforceConfig, logger: LambdaLogger): Either[Failure, SalesforceConnector] =
    auth(sfConfig, logger)
      .map(new SalesforceConnector(_, sfConfig.apiVersion, logger))

  def auth(sfConfig: SalesforceConfig, logger: LambdaLogger): Either[Failure, SalesforceAuth] =
    handleRequestResult[SalesforceAuth](logger)(
      authRequest(sfConfig, logger)
    )

  def getRecordsToProcess(
      authDetails: SalesforceAuth,
      apiVersion: String,
      logger: LambdaLogger
  ): Either[Failure, Seq[PaymentFailureRecord]] = {
    /*
     * Query limited to 50 records to avoid hitting the limit for concurrent updates
     * using the Braze user track endpoint.
     * See https://www.braze.com/docs/api/errors/#fatal-errors
     *
     * Including Status_Helper__c field in query to improve its filtering efficiency and, therefore, performance.
     */
    val query =
      """
      |SELECT 
      |  Id,
      |  Contact__c,
      |  Contact__r.IdentityID__c,
      |  SF_Subscription__r.Product_Name__c,
      |  SF_Subscription__r.Zuora_Subscription_Name__c,
      |  SF_Subscription__r.Cancellation_Request_Date__c,
      |  PF_Comms_Status__c,
      |  Payment_Failure_Type__c,
      |  STG_Initial_Gateway_Response_Code__c,
      |  STG_Initial_Gateway_Response__c,
      |  PF_Comms_Last_Stage_Processed__c,
      |  PF_Comms_Number_of_Attempts__c,
      |  Currency__c,
      |  Invoice_Total_Amount__c,
      |  Billing_Account__r.Zuora__BillToCountry__c,
      |  Invoice_Created_Date__c,
      |  Initial_Payment_Created_Date__c,
      |  Recovery_Date__c,
      |  Cut_Off_Date__c
      |FROM Payment_Failure__c
      |WHERE Status_Helper__c
      |IN (
      |  'payment outstanding',
      |  'recovered',
      |  'cancelled-customer',
      |  'cancelled-auto'
      |)
      |AND PF_Comms_Status__c
      |IN (
      |  'Ready to send entry event',
      |  'Ready to send recovery event',
      |  'Ready to send voluntary cancel event',
      |  'Ready to send auto cancel event'
      |)
      |ORDER BY Invoice_Created_Date__c
      |LIMIT 50""".stripMargin

    handleRequestResult[SFPaymentFailureRecordWrapper](logger)(
      responseToQueryRequest(
        url = s"${authDetails.instance_url}/services/data/$apiVersion/query/",
        bearerToken = authDetails.access_token,
        query = query,
        logger = logger
      )
    )
      .map(_.records)
  }