From f7763d7472be422e3c182245ea6f72ae38a61a3e Mon Sep 17 00:00:00 2001 From: Thomas Kranitsas Date: Wed, 9 Dec 2020 19:55:16 +0200 Subject: [PATCH] enable timeline notifications --- src/services/ProcessorService.js | 2 ++ src/services/timelineService.js | 48 ++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 src/services/timelineService.js diff --git a/src/services/ProcessorService.js b/src/services/ProcessorService.js index 5dbe7c2..1040863 100644 --- a/src/services/ProcessorService.js +++ b/src/services/ProcessorService.js @@ -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 @@ -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) diff --git a/src/services/timelineService.js b/src/services/timelineService.js new file mode 100644 index 0000000..72510b7 --- /dev/null +++ b/src/services/timelineService.js @@ -0,0 +1,48 @@ +/** + * Timeline Service + * Interacts with InformixDB + */ +const logger = require('../common/logger') +const helper = require('../common/helper') + +const QUERY_ENABLE_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)' + +/** + * 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) +} + +/** + * 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 query = await prepare(connection, QUERY_ENABLE_TIMELINE_NOTIFICATIONS) + result = await query.executeAsync([challengeLegacyId, createdBy, createdBy]) + // await connection.commitTransactionAsync() + } catch (e) { + logger.error(`Error in 'enableTimelineNotifications' ${e}, rolling back transaction`) + await connection.rollbackTransactionAsync() + throw e + } finally { + logger.info(`Notifications have been enabled for challenge ${challengeLegacyId}`) + await connection.closeAsync() + } + return result +} + +module.exports = { + enableTimelineNotifications +}