Skip to content

Commit

Permalink
[Tech Debt] Use knex pooling correctly and provide DB connection to P…
Browse files Browse the repository at this point in the history
…gBoss
  • Loading branch information
levinmr committed Jan 2, 2025
1 parent 217c601 commit ff74b2d
Show file tree
Hide file tree
Showing 8 changed files with 18 additions and 16 deletions.
3 changes: 0 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,6 @@ jobs:
CF_ORGANIZATION_NAME: ${{ vars.CF_ORGANIZATION_NAME }}
CF_SPACE_NAME: ${{ vars.CF_SPACE_NAME_DEV }}
DB_SERVICE_NAME: ${{ vars.DB_SERVICE_NAME_DEV }}
MESSAGE_QUEUE_DATABASE_NAME: ${{ vars.MESSAGE_QUEUE_DATABASE_NAME }}
MESSAGE_QUEUE_NAME: ${{ vars.MESSAGE_QUEUE_NAME }}
NEW_RELIC_APP_NAME: ${{ vars.NEW_RELIC_APP_NAME_DEV }}
PROXY_FQDN: ${{ vars.PROXY_FQDN_DEV }}
Expand Down Expand Up @@ -111,7 +110,6 @@ jobs:
CF_ORGANIZATION_NAME: ${{ vars.CF_ORGANIZATION_NAME }}
CF_SPACE_NAME: ${{ vars.CF_SPACE_NAME_STG }}
DB_SERVICE_NAME: ${{ vars.DB_SERVICE_NAME_STG }}
MESSAGE_QUEUE_DATABASE_NAME: ${{ vars.MESSAGE_QUEUE_DATABASE_NAME }}
MESSAGE_QUEUE_NAME: ${{ vars.MESSAGE_QUEUE_NAME }}
NEW_RELIC_APP_NAME: ${{ vars.NEW_RELIC_APP_NAME_STG }}
PROXY_FQDN: ${{ vars.PROXY_FQDN_STG }}
Expand Down Expand Up @@ -141,7 +139,6 @@ jobs:
CF_ORGANIZATION_NAME: ${{ vars.CF_ORGANIZATION_NAME }}
CF_SPACE_NAME: ${{ vars.CF_SPACE_NAME_PRD }}
DB_SERVICE_NAME: ${{ vars.DB_SERVICE_NAME_PRD }}
MESSAGE_QUEUE_DATABASE_NAME: ${{ vars.MESSAGE_QUEUE_DATABASE_NAME }}
MESSAGE_QUEUE_NAME: ${{ vars.MESSAGE_QUEUE_NAME }}
NEW_RELIC_APP_NAME: ${{ vars.NEW_RELIC_APP_NAME_PRD }}
PROXY_FQDN: ${{ vars.PROXY_FQDN_PRD }}
Expand Down
4 changes: 0 additions & 4 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,6 @@ on:
DB_SERVICE_NAME:
required: true
type: string
MESSAGE_QUEUE_DATABASE_NAME:
required: true
type: string
MESSAGE_QUEUE_NAME:
required: true
type: string
Expand Down Expand Up @@ -72,7 +69,6 @@ env:
CF_SPACE_NAME: ${{ inputs.CF_SPACE_NAME }}
DB_SERVICE_NAME: ${{ inputs.DB_SERVICE_NAME }}
GA4_CREDS: ${{ secrets.GA4_CREDS }}
MESSAGE_QUEUE_DATABASE_NAME: ${{ inputs.MESSAGE_QUEUE_DATABASE_NAME }}
MESSAGE_QUEUE_NAME: ${{ inputs.MESSAGE_QUEUE_NAME }}
NEW_RELIC_APP_NAME: ${{ inputs.NEW_RELIC_APP_NAME }}
NEW_RELIC_LICENSE_KEY: ${{ secrets.NEW_RELIC_LICENSE_KEY }}
Expand Down
1 change: 0 additions & 1 deletion .github/workflows/manual_deploy_to_dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ jobs:
CF_ORGANIZATION_NAME: ${{ vars.CF_ORGANIZATION_NAME }}
CF_SPACE_NAME: ${{ vars.CF_SPACE_NAME_DEV }}
DB_SERVICE_NAME: ${{ vars.DB_SERVICE_NAME_DEV }}
MESSAGE_QUEUE_DATABASE_NAME: ${{ vars.MESSAGE_QUEUE_DATABASE_NAME }}
MESSAGE_QUEUE_NAME: ${{ vars.MESSAGE_QUEUE_NAME }}
NEW_RELIC_APP_NAME: ${{ vars.NEW_RELIC_APP_NAME_DEV }}
PROXY_FQDN: ${{ vars.PROXY_FQDN_DEV }}
Expand Down
2 changes: 1 addition & 1 deletion index.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ async function _processReport(appConfig, context, reportConfig, processor) {
await processor.processChain(context);
logger.info("Processing complete");
} catch (e) {
logger.error("Encountered an error");
logger.error("Encountered an error during report processing");
logger.error(util.inspect(e));
}
});
Expand Down
1 change: 0 additions & 1 deletion manifest.consumer.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ applications:
ANALYTICS_REPORT_EMAIL: ${ANALYTICS_REPORT_EMAIL}
AWS_CACHE_TIME: '0'
GOOGLE_APPLICATION_CREDENTIALS: /home/vcap/app/${ANALYTICS_KEY_FILE_NAME}
MESSAGE_QUEUE_DATABASE_NAME: ${MESSAGE_QUEUE_DATABASE_NAME}
MESSAGE_QUEUE_NAME: ${MESSAGE_QUEUE_NAME}
NEW_RELIC_APP_NAME: ${NEW_RELIC_APP_NAME}
NEW_RELIC_LICENSE_KEY: ${NEW_RELIC_LICENSE_KEY}
Expand Down
1 change: 0 additions & 1 deletion manifest.publisher.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ applications:
# The default path for reports (used for gov-wide reports)
AWS_BUCKET_PATH: data/live
AWS_CACHE_TIME: '0'
MESSAGE_QUEUE_DATABASE_NAME: ${MESSAGE_QUEUE_DATABASE_NAME}
MESSAGE_QUEUE_NAME: ${MESSAGE_QUEUE_NAME}
NEW_RELIC_APP_NAME: ${NEW_RELIC_APP_NAME}
NEW_RELIC_LICENSE_KEY: ${NEW_RELIC_LICENSE_KEY}
Expand Down
2 changes: 1 addition & 1 deletion src/app_config.js
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ class AppConfig {
}

get messageQueueName() {
return process.env.MESSAGE_QUEUE_NAME;
return process.env.MESSAGE_QUEUE_NAME || "analytics_reporter_job_queue";
}

get postgres() {
Expand Down
20 changes: 16 additions & 4 deletions src/pg_boss_client.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,24 @@ class PgBossClient {
/**
* Execute PgBoss SQL using the knex library interface
*
* @param {string} text the SQL string to execute.
* @param {string[]} values the values to insert into the SQL string.
* @param {string} sql the SQL string to execute.
* @param {string[]} parameters the parameters to insert into the SQL string.
* @returns {Promise} which resolves with the result of the SQL query.
*/
async executeSql(text, values) {
return this.#knex.raw(text, values);
executeSql(sql, parameters = []) {
// This is needed to replace pg-boss' $1, $2 arguments
// into knex's :val, :val2 style.
const replacedSql = sql.replace(
/\$(\d+)\b/g,
(_, number) => `:param_${number}`,
);

const parametersObject = {};
parameters.forEach(
(value, index) => (parametersObject[`param_${index + 1}`] = value),
);

return this.#knex.raw(replacedSql, parametersObject);
}
}

Expand Down

0 comments on commit ff74b2d

Please sign in to comment.