Skip to content
This repository has been archived by the owner on Jan 23, 2025. It is now read-only.

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
James Cori committed Dec 10, 2020
2 parents fb377f0 + 179d797 commit 6edf5ca
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 2 deletions.
3 changes: 1 addition & 2 deletions src/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,7 @@ const dataHandler = (messageSet, topic, partition) => Promise.each(messageSet, a

try {
if (topic === config.CREATE_CHALLENGE_TOPIC) {
// create shut off. Only works with challenges of status draft, which happens on update
// await ProcessorService.processCreate(messageJSON)
await ProcessorService.processCreate(messageJSON)
} else {
await ProcessorService.processUpdate(messageJSON)
}
Expand Down
2 changes: 2 additions & 0 deletions src/services/ProcessorService.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ const constants = require('../constants')
const groupService = require('./groupsService')
const termsService = require('./termsService')
const copilotPaymentService = require('./copilotPaymentService')
const timelineService = require('./timelineService')

/**
* Get group information by V5 UUID
Expand Down Expand Up @@ -376,6 +377,7 @@ async function processCreate (message) {
for (const resource of (challengeResourcesResponse.body || [])) {
await helper.postBusEvent(config.RESOURCE_CREATE_TOPIC, _.pick(resource, ['id', 'challengeId', 'memberId', 'memberHandle', 'roleId', 'created', 'createdBy', 'updated', 'updatedBy', 'legacyId']))
}
await timelineService.enableTimelineNotifications(newChallenge.body.result.content.id, _.get(message, 'payload.createdBy'))
logger.debug('End of processCreate')
} catch (e) {
logger.error('processCreate Catch', e)
Expand Down
77 changes: 77 additions & 0 deletions src/services/timelineService.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
/**
* Timeline Service
* Interacts with InformixDB
*/
const util = require('util')
const logger = require('../common/logger')
const helper = require('../common/helper')

const QUERY_GET_TIMELINE_NOTIFICATION_SETTINGS = 'SELECT value FROM project_info WHERE project_id = %d and project_info_type_id = %d'
const QUERY_CREATE_TIMELINE_NOTIFICATIONS = 'INSERT INTO project_info (project_id, project_info_type_id, value, create_user, create_date, modify_user, modify_date) VALUES (?, "11", "On", ?, CURRENT, ?, CURRENT)'
const QUERY_UPDATE_TIMELINE_NOTIFICATIONS = 'UPDATE project_info SET value = "On", modify_user = ?, modify_date = CURRENT WHERE project_info_type_id = "11" AND project_id = ?'

/**
* Prepare Informix statement
* @param {Object} connection the Informix connection
* @param {String} sql the sql
* @return {Object} Informix statement
*/
async function prepare (connection, sql) {
// logger.debug(`Preparing SQL ${sql}`)
const stmt = await connection.prepareAsync(sql)
return Promise.promisifyAll(stmt)
}

/**
* Get teh timeline notification settings entry
* @param {Number} challengeLegacyId the legacy challenge ID
*/
async function getTimelineNotifications (challengeLegacyId) {
// logger.debug(`Getting Groups for Challenge ${challengeLegacyId}`)
const connection = await helper.getInformixConnection()
let result = null
try {
result = await connection.queryAsync(util.format(QUERY_GET_TIMELINE_NOTIFICATION_SETTINGS, challengeLegacyId, 11))
} catch (e) {
logger.error(`Error in 'getTermsForChallenge' ${e}`)
throw e
} finally {
await connection.closeAsync()
}
return result
}

/**
* Enable timeline notifications
* @param {Number} challengeLegacyId the legacy challenge ID
* @param {String} createdBy the created by
*/
async function enableTimelineNotifications (challengeLegacyId, createdBy) {
const connection = await helper.getInformixConnection()
let result = null
try {
// await connection.beginTransactionAsync()
const [existing] = await getTimelineNotifications(challengeLegacyId)
if (existing) {
const query = await prepare(connection, QUERY_UPDATE_TIMELINE_NOTIFICATIONS)
result = await query.executeAsync([createdBy, challengeLegacyId])
} else {
const query = await prepare(connection, QUERY_CREATE_TIMELINE_NOTIFICATIONS)
result = await query.executeAsync([challengeLegacyId, createdBy, createdBy])
}
// await connection.commitTransactionAsync()
logger.info(`Notifications have been enabled for challenge ${challengeLegacyId}`)
} catch (e) {
logger.error(`Error in 'enableTimelineNotifications' ${e}, rolling back transaction`)
await connection.rollbackTransactionAsync()
throw e
} finally {
await connection.closeAsync()
}
return result
}

module.exports = {
getTimelineNotifications,
enableTimelineNotifications
}

0 comments on commit 6edf5ca

Please sign in to comment.