Skip to content

Commit

Permalink
temp: inspect error in getMessages
Browse files Browse the repository at this point in the history
  • Loading branch information
stanleynguyen committed Jun 28, 2023
1 parent a4e01b3 commit 476f47b
Showing 1 changed file with 67 additions and 58 deletions.
125 changes: 67 additions & 58 deletions worker/src/core/loaders/message-worker/util/govsg.class.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,73 +61,82 @@ class Govsg {
}

async getMessages(jobId: number, rate: number) {
const dbResults: {
id: number
recipient: string
params: { [key: string]: string }
body: string
campaignId: number
whatsappTemplateLabel: string
paramOrder: string[]
}[] = map(
await this.postmanConnection.query(
'SELECT get_messages_to_send_govsg(:jobId, :rate);',
{
replacements: { jobId, rate },
type: QueryTypes.SELECT,
}
),
'get_messages_to_send_govsg'
)
if (dbResults.length === 0) {
return []
}
try {
const dbResults: {
id: number
recipient: string
params: { [key: string]: string }
body: string
campaignId: number
whatsappTemplateLabel: string
paramOrder: string[]
}[] = map(
await this.postmanConnection.query(
'SELECT get_messages_to_send_govsg(:jobId, :rate);',
{
replacements: { jobId, rate },
type: QueryTypes.SELECT,
}
),
'get_messages_to_send_govsg'
)
if (dbResults.length === 0) {
return []
}

const apiClientIdMap = await this.flamingoDbClient.getApiClientId(
dbResults.map((result) => result.recipient)
)
const apiClientIdMap = await this.flamingoDbClient.getApiClientId(
dbResults.map((result) => result.recipient)
)

const unvalidatedMessages = dbResults.map((result) => ({
id: result.id, // need this to update govsg_ops table
recipient: result.recipient,
templateName: result.whatsappTemplateLabel,
params: WhatsAppClient.transformNamedParams(
result.params,
result.paramOrder
),
apiClient:
apiClientIdMap.get(result.recipient) ?? WhatsAppApiClient.clientTwo,
language: WhatsAppLanguages.english,
}))
const validatedWhatsAppIds =
await this.whatsappClient.validateMultipleRecipients(
unvalidatedMessages,
config.get('env') === 'development'
const unvalidatedMessages = dbResults.map((result) => ({
id: result.id, // need this to update govsg_ops table
recipient: result.recipient,
templateName: result.whatsappTemplateLabel,
params: WhatsAppClient.transformNamedParams(
result.params,
result.paramOrder
),
apiClient:
apiClientIdMap.get(result.recipient) ?? WhatsAppApiClient.clientTwo,
language: WhatsAppLanguages.english,
}))
const validatedWhatsAppIds =
await this.whatsappClient.validateMultipleRecipients(
unvalidatedMessages,
config.get('env') === 'development'
)
const invalidMessages = validatedWhatsAppIds.filter(
(message) => message.status === 'failed'
)
const invalidMessages = validatedWhatsAppIds.filter(
(message) => message.status === 'failed'
)
// update govsg_ops table with invalid messages
if (invalidMessages.length > 0) {
await this.postmanConnection.query(
`UPDATE
// update govsg_ops table with invalid messages
if (invalidMessages.length > 0) {
await this.postmanConnection.query(
`UPDATE
govsg_ops
SET
status = 'INVALID_RECIPIENT', updated_at=clock_timestamp()
WHERE
id IN (:ids);`,
{
replacements: { ids: invalidMessages.map((message) => message.id) },
type: QueryTypes.UPDATE,
}
)
{
replacements: { ids: invalidMessages.map((message) => message.id) },
type: QueryTypes.UPDATE,
}
)
}
return validatedWhatsAppIds
.filter((message) => message.status === 'valid')
.map((message) => ({
...message,
body: '', // just putting this in to satisfy the interface grrr
}))
} catch (e) {
logger.error({
message: 'getMessages failed',
error_message: (e as Error).message,
stack: `${(e as Error).stack}`,
})
throw e
}
return validatedWhatsAppIds
.filter((message) => message.status === 'valid')
.map((message) => ({
...message,
body: '', // just putting this in to satisfy the interface grrr
}))
}

async sendMessage({
Expand Down

0 comments on commit 476f47b

Please sign in to comment.