Skip to content

Commit

Permalink
Move return versions import into a new job
Browse files Browse the repository at this point in the history
We ensure we have an endpoint that allows us to trigger the job still, whilst dropping some of the noise and mess that previous job unnecessarily had.
  • Loading branch information
Cruikshanks committed Sep 2, 2024
1 parent 5019de5 commit c8dade2
Show file tree
Hide file tree
Showing 11 changed files with 112 additions and 21 deletions.
1 change: 1 addition & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,5 @@ WRLS_LOG_LEVEL=debug
WRLS_CRON_LICENCES='0 16 * * 1,2,3,4,5'
WRLS_CRON_CHARGING='0 14 * * 1,2,3,4,5'
WRLS_CRON_NALD='0 */1 * * *'
WRLS_CRON_RETURN_VERSIONS='0 6 * * 1,2,3,4,5'
WRLS_CRON_TRACKER='0 15 * * 1,2,3,4,5'
3 changes: 3 additions & 0 deletions config.js
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,9 @@ module.exports = {
charging: {
schedule: process.env.WRLS_CRON_CHARGING || '0 1 * * 1,2,3,4,5'
},
returnVersions: {
schedule: process.env.WRLS_CRON_RETURN_VERSIONS || '0 6 * * 1,2,3,4,5'
},
tracker: {
schedule: process.env.WRLS_CRON_TRACKER || '0 10 * * 1,2,3,4,5'
}
Expand Down
1 change: 1 addition & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ const plugins = [
require('./src/plugins/pg-boss.plugin'),
require('./src/modules/licence-import/plugin'),
require('./src/modules/charging-import/plugin'),
require('./src/modules/return-versions/plugin.js'),
require('./src/modules/nald-import/plugin'),
require('./src/modules/bill-runs-import/plugin'),
require('./src/modules/core/plugin')
Expand Down
10 changes: 0 additions & 10 deletions src/modules/charging-import/jobs/charging-data.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ const job = require('../lib/job')
const queryLoader = require('../lib/query-loader')
const modLogQueries = require('../lib/queries/mod-logs.js')
const purposesQueries = require('../lib/queries/purposes')
const returnVersionQueries = require('../lib/queries/return-versions')
const financialAgreementTypeQueries = require('../lib/queries/financial-agreement-types')

const jobName = 'import.charging-data'
Expand All @@ -25,15 +24,6 @@ const handler = async () => {
purposesQueries.importSecondaryPurposes,
purposesQueries.importUses,
purposesQueries.importValidPurposeCombinations,
returnVersionQueries.importReturnVersions,
returnVersionQueries.importReturnRequirements,
returnVersionQueries.importReturnRequirementPoints,
returnVersionQueries.importReturnRequirementPurposes,
returnVersionQueries.importReturnVersionsMultipleUpload,
returnVersionQueries.importReturnVersionsCreateNotesFromDescriptions,
returnVersionQueries.importReturnVersionsCorrectStatusForWrls,
returnVersionQueries.importReturnVersionsSetToDraftMissingReturnRequirements,
returnVersionQueries.importReturnVersionsAddMissingReturnVersionEndDates,
modLogQueries.importModLogs,
modLogQueries.linkLicencesToModLogs,
modLogQueries.linkChargeVersionsToModLogs,
Expand Down
14 changes: 14 additions & 0 deletions src/modules/return-versions/controller.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
'use strict'

const ImportJob = require('./jobs/import.js')

async function importReturnVersions (request, h) {
await request.messageQueue.deleteQueue(ImportJob.JOB_NAME)
await request.messageQueue.publish(ImportJob.createMessage())

return h.response().code(204)
}

module.exports = {
importReturnVersions
}
49 changes: 49 additions & 0 deletions src/modules/return-versions/jobs/import.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
'use strict'

const { pool } = require('../../../lib/connectors/db.js')
const Queries = require('../lib/queries.js')

const JOB_NAME = 'return-versions.import'

function createMessage () {
return {
name: JOB_NAME,
options: {
singletonKey: JOB_NAME
}
}
}

async function handler () {
try {
global.GlobalNotifier.omg(`${JOB_NAME}: started`)

await pool.query(Queries.importReturnVersions)
await pool.query(Queries.importReturnRequirements)
await pool.query(Queries.importReturnRequirementPoints)
await pool.query(Queries.importReturnRequirementPurposes)
await pool.query(Queries.importReturnVersionsMultipleUpload)
await pool.query(Queries.importReturnVersionsCreateNotesFromDescriptions)
await pool.query(Queries.importReturnVersionsCorrectStatusForWrls)
await pool.query(Queries.importReturnVersionsSetToDraftMissingReturnRequirements)
await pool.query(Queries.importReturnVersionsAddMissingReturnVersionEndDates)
} catch (error) {
global.GlobalNotifier.omfg(`${JOB_NAME}: errored`, error)
throw error
}
}

async function onComplete (job) {
if (!job.failed) {
global.GlobalNotifier.omg(`${JOB_NAME}: finished`)
} else {
global.GlobalNotifier.omg(`${JOB_NAME}: failed`)
}
}

module.exports = {
JOB_NAME,
createMessage,
handler,
onComplete
}
File renamed without changes.
28 changes: 28 additions & 0 deletions src/modules/return-versions/plugin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
'use strict'

const cron = require('node-cron')

const ImportJob = require('./jobs/import.js')

const config = require('../../../config')

async function register (server, _options) {
// Register import return versions job
await server.messageQueue.subscribe(ImportJob.JOB_NAME, ImportJob.handler)
await server.messageQueue.onComplete(ImportJob.JOB_NAME, (executedJob) => {
return ImportJob.onComplete(executedJob)
})

// Set up import of return data on cron job
cron.schedule(config.import.returnVersions.schedule, async () => {
await server.messageQueue.publish(ImportJob.createMessage())
})
}

module.exports = {
plugin: {
name: 'importReturnVersions',
dependencies: ['pgBoss'],
register
}
}
13 changes: 13 additions & 0 deletions src/modules/return-versions/routes.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
'use strict'

const controller = require('./controller')

const routes = [
{
method: 'post',
handler: controller.importReturnVersions,
path: '/import/return-versions'
}
]

module.exports = routes
4 changes: 3 additions & 1 deletion src/routes.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ const jobSummaryRoutes = require('./modules/jobs/routes')
const licenceImportRoutes = require('./modules/licence-import/routes')
const naldImportRoutes = require('./modules/nald-import/routes')
const returnsRoutes = require('./modules/returns/routes')
const returnVersionsRoutes = require('./modules/return-versions/routes.js')

module.exports = [
...chargingImportRoutes,
Expand All @@ -13,5 +14,6 @@ module.exports = [
...jobSummaryRoutes,
...licenceImportRoutes,
...naldImportRoutes,
...returnsRoutes
...returnsRoutes,
...returnVersionsRoutes
]
10 changes: 0 additions & 10 deletions test/modules/charging-import/jobs/charging-data.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ const { expect } = Code
// Test helpers
const modLogQueries = require('../../../../src/modules/charging-import/lib/queries/mod-logs.js')
const purposesQueries = require('../../../../src/modules/charging-import/lib/queries/purposes')
const returnVersionQueries = require('../../../../src/modules/charging-import/lib/queries/return-versions')
const financialAgreementTypeQueries = require('../../../../src/modules/charging-import/lib/queries/financial-agreement-types')

// Things we need to stub
Expand Down Expand Up @@ -56,15 +55,6 @@ experiment('modules/charging-import/jobs/charging-data.js', () => {
purposesQueries.importSecondaryPurposes,
purposesQueries.importUses,
purposesQueries.importValidPurposeCombinations,
returnVersionQueries.importReturnVersions,
returnVersionQueries.importReturnRequirements,
returnVersionQueries.importReturnRequirementPoints,
returnVersionQueries.importReturnRequirementPurposes,
returnVersionQueries.importReturnVersionsMultipleUpload,
returnVersionQueries.importReturnVersionsCreateNotesFromDescriptions,
returnVersionQueries.importReturnVersionsCorrectStatusForWrls,
returnVersionQueries.importReturnVersionsSetToDraftMissingReturnRequirements,
returnVersionQueries.importReturnVersionsAddMissingReturnVersionEndDates,
modLogQueries.importModLogs,
modLogQueries.linkLicencesToModLogs,
modLogQueries.linkChargeVersionsToModLogs,
Expand Down

0 comments on commit c8dade2

Please sign in to comment.