Skip to content

Commit

Permalink
Merge branch 'main' into return-requirement-cleanup-step
Browse files Browse the repository at this point in the history
  • Loading branch information
Cruikshanks authored Sep 3, 2024
2 parents 737a3a8 + 74009d8 commit d43cf76
Show file tree
Hide file tree
Showing 18 changed files with 224 additions and 69 deletions.
9 changes: 5 additions & 4 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@ IMPORT_LICENCE_AGREEMENTS=false
WRLS_LOG_LEVEL=debug

# Use Cron type syntax to set timings for these background processes
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_TRACKER='0 15 * * 1,2,3,4,5'
WRLS_CRON_NALD='0 1 * * *'
WRLS_CRON_LICENCES='0 4 * * 1,2,3,4,5'
WRLS_CRON_RETURN_VERSIONS='0 6 * * 1,2,3,4,5'
WRLS_CRON_MOD_LOGS='0 7 * * 1,2,3,4,5'
WRLS_CRON_TRACKER='0 10 * * 1,2,3,4,5'
7 changes: 5 additions & 2 deletions config.js
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,11 @@ module.exports = {
// was calculated from NALD data
isBillingDocumentRoleImportEnabled: false
},
charging: {
schedule: process.env.WRLS_CRON_CHARGING || '0 1 * * 1,2,3,4,5'
modLogs: {
schedule: process.env.WRLS_CRON_MOD_LOGS || '0 7 * * 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
2 changes: 2 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ const plugins = [
require('./src/plugins/pg-boss.plugin'),
require('./src/modules/licence-import/plugin'),
require('./src/modules/charging-import/plugin'),
require('./src/modules/mod-logs/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
19 changes: 1 addition & 18 deletions src/modules/charging-import/jobs/charging-data.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@

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 @@ -24,22 +22,7 @@ const handler = async () => {
purposesQueries.importPrimaryPurposes,
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,
modLogQueries.linkLicenceVersionsToModLogs,
modLogQueries.linkReturnVersionsToModLogs,
modLogQueries.updateReturnVersionReasons
purposesQueries.importValidPurposeCombinations
])

global.GlobalNotifier.omg('import.charging-data: finished')
Expand Down
9 changes: 0 additions & 9 deletions src/modules/charging-import/plugin.js
Original file line number Diff line number Diff line change
@@ -1,21 +1,12 @@
'use strict'

const cron = require('node-cron')

const chargeVersionsJob = require('./jobs/charge-versions')
const chargingDataJob = require('./jobs/charging-data')

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

const registerSubscribers = async server => {
// Register handlers
await server.messageQueue.subscribe(chargeVersionsJob.jobName, chargeVersionsJob.handler)
await server.messageQueue.subscribe(chargingDataJob.jobName, chargingDataJob.handler)

// Set up import of charge data on cron job
cron.schedule(config.import.charging.schedule,
() => server.messageQueue.publish(chargingDataJob.createMessage())
)
}

const plugin = {
Expand Down
14 changes: 14 additions & 0 deletions src/modules/mod-logs/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 importModLogs (request, h) {
await request.messageQueue.deleteQueue(ImportJob.JOB_NAME)
await request.messageQueue.publish(ImportJob.createMessage())

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

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

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

const JOB_NAME = 'mod-logs.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.importModLogs)
await pool.query(Queries.linkLicencesToModLogs)
await pool.query(Queries.linkChargeVersionsToModLogs)
await pool.query(Queries.linkLicenceVersionsToModLogs)
await pool.query(Queries.linkReturnVersionsToModLogs)
await pool.query(Queries.updateReturnVersionReasons)
} 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/mod-logs/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 mod logs 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 on cron job
cron.schedule(config.import.modLogs.schedule, async () => {
await server.messageQueue.publish(ImportJob.createMessage())
})
}

module.exports = {
plugin: {
name: 'importModLogs',
dependencies: ['pgBoss'],
register
}
}
13 changes: 13 additions & 0 deletions src/modules/mod-logs/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.importModLogs,
path: '/import/mod-logs'
}
]

module.exports = routes
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 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
6 changes: 5 additions & 1 deletion src/routes.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ 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')
const modLogsRoutes = require('./modules/mod-logs/routes.js')

module.exports = [
...chargingImportRoutes,
Expand All @@ -13,5 +15,7 @@ module.exports = [
...jobSummaryRoutes,
...licenceImportRoutes,
...naldImportRoutes,
...returnsRoutes
...returnsRoutes,
...returnVersionsRoutes,
...modLogsRoutes
]
19 changes: 1 addition & 18 deletions test/modules/charging-import/jobs/charging-data.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@ const { experiment, test, beforeEach, afterEach } = exports.lab = Lab.script()
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 @@ -55,22 +53,7 @@ experiment('modules/charging-import/jobs/charging-data.js', () => {
purposesQueries.importPrimaryPurposes,
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,
modLogQueries.linkLicenceVersionsToModLogs,
modLogQueries.linkReturnVersionsToModLogs,
modLogQueries.updateReturnVersionReasons
purposesQueries.importValidPurposeCombinations
]
)).to.be.true()
})
Expand Down
Loading

0 comments on commit d43cf76

Please sign in to comment.