in formstack-baton-requests/src/main/scala/com/gu/identity/formstackbatonrequests/services/DynamoUpdateService.scala [59:105]
private def writeSubmissionsPage(
form: Form,
minTimeUTC: LocalDateTime,
maxTimeUTC: Option[LocalDateTime],
token: FormstackAccountToken
)(
submissionPage: Int = 1
): Either[Throwable, Int] = {
logger.info(
s"(Form ${form.id} / SubmissionPage $submissionPage): Requesting submissionPage"
)
for {
response <- formstackClient.formSubmissionsForGivenPage(
page = submissionPage,
formId = form.id,
minTimeUTC = minTimeUTC,
maxTimeUTC = maxTimeUTC,
encryptionPassword = config.encryptionPassword,
accountToken = token
).left.flatMap(skipSafeErrors)
_ = logger.info(
s"(Form ${form.id} / SubmissionPage $submissionPage): Received submissionPage of ${response.pages} pages"
)
submissionsIdsWithEmails = submissionsWithEmailAndAccount(
submissions = response.submissions,
accountNumber = token.account
)
_ = logger.info(
s"(Form ${form.id} / SubmissionPage $submissionPage): Writing ${submissionsIdsWithEmails.length} submission id(s) and emails to Dynamo"
)
_ <- dynamoClient.writeSubmissions(
submissionIdsAndEmails = submissionsIdsWithEmails,
salt = config.bcryptSalt,
submissionsTableName = config.submissionTableName
).flatMap(failUnprocessedItems)
_ = logger.info(
s"(Form ${form.id} / SubmissionPage $submissionPage): Wrote ${submissionsIdsWithEmails.length} submission id(s) and emails to Dynamo"
)
} yield response.pages
}