From a3bf50d8ec70aad2e00726a6c7bfb486621638fe Mon Sep 17 00:00:00 2001 From: nkumar-topcoder <33625707+nkumar-topcoder@users.noreply.github.com> Date: Thu, 13 Feb 2020 16:12:00 +0530 Subject: [PATCH 01/22] [skip ci] [skip ci] --- src/reconsiler-audit.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/reconsiler-audit.js b/src/reconsiler-audit.js index 0c44570..4846e72 100644 --- a/src/reconsiler-audit.js +++ b/src/reconsiler-audit.js @@ -22,9 +22,9 @@ async function setupPgClient() { var paramvalues = ['push-to-kafka',rec_d_start,rec_d_end]; //var paramvalues = ['push-to-kafka','60002027']; //sql1 = 'select * from common_oltp.pgifx_sync_audit where pgifx_sync_audit.syncstatus =($1)' - sql1 = " select seq_id, payloadseqid,auditdatetime at time zone 'utc' at time zone 'Asia/Calcutta',syncstatus, payload where pgifx_sync_audit.syncstatus =($1)" - sql2 = " and pgifx_sync_audit.auditdatetime >= DATE(NOW()) - INTERVAL '1"+ rec_d_type + "' * ($2)" - sql3 = " and pgifx_sync_audit.auditdatetime <= DATE(NOW()) - INTERVAL '1"+ rec_d_type + "' * ($3)" + sql1 = "select pgifx_sync_audit.seq_id, payloadseqid,auditdatetime ,syncstatus, payload from pgifx_sync_audit where pgifx_sync_audit.syncstatus =($1)" + sql2 = " and pgifx_sync_audit.auditdatetime between (timezone('utc',now())) - interval '1"+ rec_d_type + "' * ($2)" + sql3 = " and (timezone('utc',now())) - interval '1"+ rec_d_type + "' * ($3)" sql = sql1 + sql2 + sql3 console.log('sql ', sql) // sql3 = ' select * from common_oltp.pgifx_sync_audit where pgifx_sync_audit.syncstatus =($1)' From 9be18c46b69171ebbac20f73b5e103efd717c66e Mon Sep 17 00:00:00 2001 From: nkumar Date: Mon, 17 Feb 2020 10:37:31 +0000 Subject: [PATCH 02/22] reconsiler checkin --- config/default.js | 7 +- src/reconsiler-audit.js | 221 ++++++++++++++++++++++++++++--------- src/services/auditTrail.js | 6 +- 3 files changed, 176 insertions(+), 58 deletions(-) diff --git a/config/default.js b/config/default.js index d22bb48..a207e87 100644 --- a/config/default.js +++ b/config/default.js @@ -44,13 +44,14 @@ module.exports = { SLACKNOTIFY: process.env.SLACKNOTIFY || 'false' }, RECONSILER:{ - RECONSILER_START: process.env.RECONSILER_START || 10, - RECONSILER_END: process.env.RECONSILER_END || 5, + RECONSILER_START: process.env.RECONSILER_START || 5, + RECONSILER_END: process.env.RECONSILER_END || 1, RECONSILER_DURATION_TYPE: process.env.RECONSILER_DURATION_TYPE || 'm' }, DYNAMODB: { - DYNAMODB_TABLE: process.env.DYNAMODB_TABLE || 'test_pg_ifx_payload_sync' + DYNAMODB_TABLE: process.env.DYNAMODB_TABLE || 'test_pg_ifx_payload_sync', + DD_ElapsedTime: process.env.DD_ElapsedTime || 600000 }, AUTH0_URL: process.env.AUTH0_URL , diff --git a/src/reconsiler-audit.js b/src/reconsiler-audit.js index 4846e72..545cb85 100644 --- a/src/reconsiler-audit.js +++ b/src/reconsiler-audit.js @@ -1,45 +1,40 @@ const config = require('config') const pg = require('pg') +var AWS = require("aws-sdk"); const logger = require('./common/logger') const pushToKafka = require('./services/pushToKafka') const pgOptions = config.get('POSTGRES') const postMessage = require('./services/posttoslack') const pgConnectionString = `postgresql://${pgOptions.user}:${pgOptions.password}@${pgOptions.host}:${pgOptions.port}/${pgOptions.database}` -const pgClient = new pg.Client(pgConnectionString) +//const pgClient = new pg.Client(pgConnectionString) const auditTrail = require('./services/auditTrail'); const port = 3000 - +//----------------------------Calling reconsiler 1 Audit log script ---------- async function setupPgClient() { var payloadcopy try { - await pgClient.connect() - //sql1= "select * from pgifx_sync_audit where syncstatus in ('Informix-updated') - //and auditdatetime >= (now()::date - interval '10m') and auditdatetime <= (now()::date - interval '5m') "; - //>= 12.53 and <= 12.48 + const pgClient = new pg.Client(pgConnectionString) + if (!pgClient.connect()) { + await pgClient.connect() + } + //rec_d_start = 10 + //rec_d_end = 1 rec_d_start = config.RECONSILER.RECONSILER_START rec_d_end = config.RECONSILER.RECONSILER_END rec_d_type = config.RECONSILER.RECONSILER_DURATION_TYPE - var paramvalues = ['push-to-kafka',rec_d_start,rec_d_end]; - //var paramvalues = ['push-to-kafka','60002027']; - //sql1 = 'select * from common_oltp.pgifx_sync_audit where pgifx_sync_audit.syncstatus =($1)' + var paramvalues = ['push-to-kafka',rec_d_start,rec_d_end]; sql1 = "select pgifx_sync_audit.seq_id, payloadseqid,auditdatetime ,syncstatus, payload from pgifx_sync_audit where pgifx_sync_audit.syncstatus =($1)" sql2 = " and pgifx_sync_audit.auditdatetime between (timezone('utc',now())) - interval '1"+ rec_d_type + "' * ($2)" sql3 = " and (timezone('utc',now())) - interval '1"+ rec_d_type + "' * ($3)" sql = sql1 + sql2 + sql3 - console.log('sql ', sql) - // sql3 = ' select * from common_oltp.pgifx_sync_audit where pgifx_sync_audit.syncstatus =($1)' - // sql4 = " and pgifx_sync_audit.payloadseqid = ($2)" - - //sql = sql3 + sql4 - //const result = await pgClient.query(sql1, (err, res) => { await pgClient.query(sql,paramvalues, async (err,result) => { if (err) { - var errmsg0 = `error-sync: Audit reconsiler query "${err.message}"` + var errmsg0 = `error-sync: Audit Reconsiler1 query "${err.message}"` logger.debug (errmsg0) - // await callposttoslack(errmsg0) + await callposttoslack(errmsg0) } else{ - console.log("Reconsiler Rowcount = ", result.rows.length) + console.log("Reconsiler1 : Rowcount = ", result.rows.length) for (var i = 0; i < result.rows.length; i++) { for(var columnName in result.rows[i]) { // console.log('column "%s" has a value of "%j"', columnName, result.rows[i][columnName]); @@ -48,39 +43,37 @@ async function setupPgClient() { var reconsiler_payload = result.rows[i][columnName] } }//column for loop - try { + try { + //console.log("reconsiler_payload====",reconsiler_payload); + if (reconsiler_payload != ""){ var s_payload = reconsiler_payload payload = JSON.parse(s_payload) payload1 = payload.payload await pushToKafka(payload1) - logger.info('Reconsiler : Push to kafka and added for audit trail') - audit(s_payload) - } catch (error) { - logger.error('Reconsiler: Could not parse message payload') - logger.debug(`error-sync: Reconsiler parse message : "${error.message}"`) - const errmsg1 = `postgres-ifx-processor: Reconsiler : Error Parse or payload : "${error.message}" \n payload : "${payloadcopy.payload}"` + logger.info('Reconsiler1 Push to kafka and added for audit trail') + await audit(s_payload,0) //0 flag means reconsiler 1. 1 flag reconsiler 2 i,e dynamodb + } }catch (error) { + logger.error('Reconsiler1 : Could not parse message payload') + logger.debug(`error-sync: Reconsiler1 parse message : "${error.message}"`) + const errmsg1 = `error-sync: Reconsiler1 : Error Parse or payload : "${error.message}" ` logger.logFullError(error) - audit(error) + // await audit(error,0) await callposttoslack(errmsg1) - } - }//result for loop + terminate() + } + }//result for loop } pgClient.end() - }) + terminate() + }) }catch (err) { - const errmsg = `postgres-ifx-processor: Reconsiler : Error in setting up postgres client: "${err.message}"` + const errmsg = `postgres-ifx-processor: Reconsiler1 : Error in setting up postgres client: "${err.message}"` logger.error(errmsg) logger.logFullError(err) await callposttoslack(errmsg) terminate() } -} - -const terminate = () => process.exit() - -async function run() { - logger.debug("Initialising Reconsiler setup...") - await setupPgClient() +return } async function callposttoslack(slackmessage) { @@ -92,35 +85,159 @@ async function callposttoslack(slackmessage) { logger.debug('Message posted successfully'); //callback(null); } else if (response.statusCode < 500) { - const errmsg1 = `Slack Error: posting message to Slack API: ${response.statusCode} - ${response.statusMessage}` + const errmsg1 = `Slack Error: Reconsiler1: posting message to Slack API: ${response.statusCode} - ${response.statusMessage}` logger.debug(`error-sync: ${errmsg1}`) } else { - logger.debug(`Server error when processing message: ${response.statusCode} - ${response.statusMessage}`); + logger.debug(`Reconsiler1: Server error when processing message: ${response.statusCode} - ${response.statusMessage}`); //callback(`Server error when processing message: ${response.statusCode} - ${response.statusMessage}`); } resolve("done") }); }) //end } - +return } -// execute -run() -async function audit(message) { - const pl_processid = 5555 - const jsonpayload = JSON.parse(message) - payload = JSON.parse(jsonpayload.payload) - payload1 = payload.payload +async function audit(message,reconsileflag) { + if (reconsileflag === 1) + { + const jsonpayload = (message) + const payload = (jsonpayload.payload) + var pl_producererr= "Reconsiler2" + }else { + const jsonpayload = JSON.parse(message) + payload = JSON.parse(jsonpayload.payload) + var pl_producererr= "Reconsiler1" + } + const pl_processid = 5555 + //const jsonpayload = JSON.parse(message) + //payload = JSON.parse(jsonpayload.payload) + payload1 = (payload.payload) const pl_seqid = payload1.payloadseqid - const pl_topic = payload1.topic // TODO can move in config ? + const pl_topic = payload1.topic // TODO can move in config ? const pl_table = payload1.table const pl_uniquecolumn = payload1.Uniquecolumn const pl_operation = payload1.operation const pl_timestamp = payload1.timestamp - //const pl_payload = JSON.stringify(payload.payload) - const logMessage = `${pl_seqid} ${pl_processid} ${pl_table} ${pl_uniquecolumn} ${pl_operation} ${payload.timestamp}` - logger.debug(`reconsiler : ${logMessage}`); - //await auditTrail([pl_seqid, pl_processid, pl_table, pl_uniquecolumn, pl_operation, "push-to-kafka-reconsiler", "", "reconsiler", "", "", new Date(), ""], 'producer') + const pl_payload = JSON.stringify(message) + const logMessage = `${pl_seqid} ${pl_processid} ${pl_table} ${pl_uniquecolumn} ${pl_operation} ${payload.timestamp}` + logger.debug(`${pl_producererr} : ${logMessage}`); + await auditTrail([pl_seqid, pl_processid, pl_table, pl_uniquecolumn, pl_operation, "push-to-kafka", "", "", pl_producererr, pl_payload, new Date(), ""], 'producer') + return +} + +//===============RECONSILER2 DYNAMODB CODE STARTS HERE ========================== + +async function callReconsiler2() +{console.log("inside 2"); + docClient.scan(params, onScan); +} + +var docClient = new AWS.DynamoDB.DocumentClient({ + region: 'us-east-1', + convertEmptyValues: true + }); +//ElapsedTime = 094600000 +ElapsedTime = config.DYNAMODB.DD_ElapsedTime + var params = { + TableName: config.DYNAMODB.DYNAMODB_TABLE, + FilterExpression: "#timestamp between :time_1 and :time_2", + ExpressionAttributeNames: { + "#timestamp": "timestamp", + }, + ExpressionAttributeValues: { + ":time_1": Date.now() - ElapsedTime, + ":time_2": Date.now() + } + } + +function onScan(err, data) { + if (err) { + logger.error("Unable to scan the table. Error JSON:", JSON.stringify(err, null, 2)); + terminate() + } else { + try + { + console.log("Scan succeeded."); + let total_dd_records = 0; + let total_pushtokafka = 0; + data.Items.forEach(async function(item) { + //console.log(item.payloadseqid); + var retval = await verify_pg_record_exists(item.payloadseqid) + //console.log("retval", retval); + if (retval === false){ + var s_payload = (item.pl_document) + payload = s_payload + payload1 = (payload.payload) + await pushToKafka(item.pl_document) + await audit(s_payload,1) //0 flag means reconsiler 1. 1 flag reconsiler 2 i,e dynamodb + logger.info(`Reconsiler2 : ${item.payloadseqid} posted to kafka: Total Kafka Count : ${total_pushtokafka}`) + total_pushtokafka += 1 + } + total_dd_records += 1 + }); + logger.info(`Reconsiler2 : count of total_dd_records ${total_dd_records}`); + if (typeof data.LastEvaluatedKey != "undefined") { + console.log("Scanning for more..."); + params.ExclusiveStartKey = data.LastEvaluatedKey; + docClient.scan(params, onScan); + } + } + catch (err) { + const errmsg = `error-sync: Reconsiler2 : Error during dynamodb scan/kafka push: "${err.message}"` + logger.error(errmsg) + logger.logFullError(err) + callposttoslack(errmsg) + //terminate() + } + } + //terminate() } +async function verify_pg_record_exists(seqid) +{ + try { + const pgClient = new pg.Client(pgConnectionString) + if (!pgClient.connect()) {await pgClient.connect()} + var paramvalues = [seqid] + sql = 'select * from common_oltp.pgifx_sync_audit where pgifx_sync_audit.payloadseqid = ($1)' + return new Promise(function (resolve, reject) { + pgClient.query(sql, paramvalues, async (err, result) => { + if (err) { + var errmsg0 = `error-sync: Audit reconsiler2 query "${err.message}"` + console.log(errmsg0) + } + else { + if (result.rows.length > 0) { + //console.log("row length > 0 ") + resolve(true); + } + else { + //console.log("0") + resolve(false); + } + } + pgClient.end() + }) + })} + catch (err) { + const errmsg = `error-sync: Reconsiler2 : Error in setting up postgres client: "${err.message}"` + logger.error(errmsg) + logger.logFullError(err) + await callposttoslack(errmsg) + terminate() + } +} + +//=================BEGIN HERE ======================= +const terminate = () => process.exit() + +async function run() { + logger.debug("Initialising Reconsiler1 setup...") + await setupPgClient() + //logger.debug("Initialising Reconsiler2 setup...") + //callReconsiler2() + // terminate() +} +//execute +run() diff --git a/src/services/auditTrail.js b/src/services/auditTrail.js index 3f45f95..7e0d645 100644 --- a/src/services/auditTrail.js +++ b/src/services/auditTrail.js @@ -25,7 +25,7 @@ if (!pgClient2) { } if (sourcetype === 'producer'){ sql0 = 'INSERT INTO common_oltp.pgifx_sync_audit(payloadseqid,processId,tablename,uniquecolumn,dboperation,syncstatus,retrycount,consumer_err,producer_err,payload,auditdatetime,topicname) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12)' - sql1= ' on conflict (payloadseqid) DO UPDATE SET (syncstatus) = ($6) where pgifx_sync_audit.payloadseqid = $1'; + sql1= ' on conflict (payloadseqid) DO UPDATE SET (syncstatus,producer_err) = ($6,$9) where pgifx_sync_audit.payloadseqid = $1'; sql = sql0 + sql1 logger.debug(`--Audit Trail update producer--`) } else { @@ -34,12 +34,12 @@ if (sourcetype === 'producer'){ // where pgifx_sync_audit.payloadseqid = $1'; //and pgifx_sync_audit.processId = $2'; sql = sql0 + sql1 - logger.debug(`--Audit Trail update consumer--`) + logger.debug(`--${1} ${3} 1 Audit Trail update consumer--`) //logger.debug(`sql values "${sql}"`); } return pgClient2.query(sql, data, (err, res) => { if (err) { - logger.debug(`--Audit Trail update error-- ${err.stack}`) + logger.debug(`-- Audit Trail update error-- ${err.stack}`) //pgClient2.end() } else { // logger.debug(`--Audit Trail update success-- `) From 95c11c2b6ca29b3a77105ca1928ec5a643a0056f Mon Sep 17 00:00:00 2001 From: nkumar Date: Mon, 17 Feb 2020 12:17:43 +0000 Subject: [PATCH 03/22] changes to consumer/package/config.yml --- .circleci/config.yml | 7 +++++++ package.json | 3 ++- src/consumer.js | 25 +++++++++++-------------- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index ca3986b..9bc2c08 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -57,6 +57,13 @@ build_steps: &build_steps ./buildenv.sh -e ${DEPLOY_ENV} -b ${LOGICAL_ENV}-${APP_NAME}-producer_dd-deployvar source buildenvvar ./master_deploy.sh -d ECS -e ${DEPLOY_ENV} -t latest -s ${GLOBAL_ENV}-global-appvar,${LOGICAL_ENV}-${APP_NAME}-appvar -i postgres-ifx-processer + + echo "Running Masterscript - deploy postgres-ifx-processer reconsiler1" + if [ -e ${LOGICAL_ENV}-${APP_NAME}-reconsiler1-deployvar.json ]; then sudo rm -vf ${LOGICAL_ENV}-${APP_NAME}-reconsiler1-deployvar.json; fi + ./buildenv.sh -e ${DEPLOY_ENV} -b ${LOGICAL_ENV}-${APP_NAME}-reconsiler1-deployvar + source buildenvvar + ./master_deploy.sh -d ECS -e ${DEPLOY_ENV} -t latest -s ${GLOBAL_ENV}-global-appvar,${LOGICAL_ENV}-${APP_NAME}-appvar -i postgres-ifx-processer + jobs: # Build & Deploy against development backend # "build-dev": diff --git a/package.json b/package.json index f026db9..5f68789 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,8 @@ "producer": "node ./src/producer.js", "consumer": "node ./src/consumer.js", "producer_dd": "node ./src/producer.js failover", - "start": "npm run producer & npm run producer_dd & npm run consumer" + "reconsiler1": "node ./src/reconsiler-audit.js", + "start": "npm run producer & npm run producer_dd & npm run consumer & npm run reconsiler1" }, "author": "Topcoder", "license": "ISC", diff --git a/src/consumer.js b/src/consumer.js index c5d1e9b..9531776 100644 --- a/src/consumer.js +++ b/src/consumer.js @@ -56,26 +56,23 @@ let cs_payloadseqid await consumer.commitOffset({ topic, partition, offset: m.offset }) // Commit offset only on success if (message.payload['retryCount']) retryvar = message.payload.retryCount; auditTrail([cs_payloadseqid,cs_processId,message.payload.table,message.payload.Uniquecolumn, - message.payload.operation,"Informix-updated",retryvar,"","",message.payload.data, message.timestamp,message.topic],'consumer') + message.payload.operation,"Informix-updated",retryvar,"","",JSON.stringify(message), message.timestamp,message.topic],'consumer') } catch (err) { - const errmsg2 = `Could not process kafka message or informix DB error: "${err.message}"` + const errmsg2 = `error-sync: Could not process kafka message or informix DB error: "${err.message}"` logger.error(errmsg2) - //await callposttoslack(errmsg2) - //logger.logFullError(err) logger.debug(`error-sync: consumer "${err.message}"`) if (!cs_payloadseqid){ - cs_payloadseqid= 'err-'+(new Date()).getTime().toString(36) + Math.random().toString(36).slice(2); - } - - await auditTrail([cs_payloadseqid,3333,'message.payload.table','message.payload.Uniquecolumn', + cs_payloadseqid= 'err-'+(new Date()).getTime().toString(36) + Math.random().toString(36).slice(2);} +/* await auditTrail([cs_payloadseqid,3333,'message.payload.table','message.payload.Uniquecolumn', 'message.payload.operation',"Error-Consumer","",err.message,"",'message.payload.data',new Date(),'message.topic'],'consumer') + }else{ + auditTrail([cs_payloadseqid,4444,message.payload.table,message.payload.Uniquecolumn, + message.payload.operation,"Informix-updated",retryvar,"consumer2","",JSON.stringify(message), message.timestamp,message.topic],'consumer') + }*/ + try { - //var retryvar if (message.payload['retryCount']) retryvar = message.payload.retryCount; await consumer.commitOffset({ topic, partition, offset: m.offset }) // Commit success as will re-publish - // await auditTrail([cs_payloadseqid,3333,'message.payload.table','message.payload.Uniquecolumn', - // 'message.payload.operation',"Informix-Updated1",retryvar,"","",'message.payload.data',new Date(),'message.topic'],'consumer') - //await callposttoslack(`Retry for Kafka push : retrycount : "${retryvar}"`) logger.debug(`Trying to push same message after adding retryCounter`) if (!message.payload.retryCount) { message.payload.retryCount = 0 @@ -95,14 +92,14 @@ let cs_payloadseqid } message.payload['retryCount'] = message.payload.retryCount + 1; await pushToKafka(message) - var errmsg9 = `Retry for Kafka push : retrycount : "${message.payload.retryCount}" : "${cs_payloadseqid}"` + var errmsg9 = `error-sync: Retry for Kafka push : retrycount : "${message.payload.retryCount}" : "${cs_payloadseqid}"` logger.debug(errmsg9) //await callposttoslack(errmsg9) } catch (err) { await auditTrail([cs_payloadseqid,cs_processId,message.payload.table,message.payload.Uniquecolumn, message.payload.operation,"Error-republishing",message.payload['retryCount'],err.message,"",message.payload.data, message.timestamp,message.topic],'consumer') - const errmsg1 = `postgres-ifx-processor: consumer : Error-republishing: "${err.message}"` + const errmsg1 = `error-sync: postgres-ifx-processor: consumer : Error-republishing: "${err.message}"` logger.error(errmsg1) logger.debug(`error-sync: consumer re-publishing "${err.message}"`) // push to slack - alertIt("slack message" From faadfc3ac296290670775950e65a356f31c800b7 Mon Sep 17 00:00:00 2001 From: nkumar-topcoder <33625707+nkumar-topcoder@users.noreply.github.com> Date: Mon, 17 Feb 2020 17:50:23 +0530 Subject: [PATCH 04/22] Update config.yml --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 9bc2c08..ca1984e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -58,7 +58,7 @@ build_steps: &build_steps source buildenvvar ./master_deploy.sh -d ECS -e ${DEPLOY_ENV} -t latest -s ${GLOBAL_ENV}-global-appvar,${LOGICAL_ENV}-${APP_NAME}-appvar -i postgres-ifx-processer - echo "Running Masterscript - deploy postgres-ifx-processer reconsiler1" + echo "Running Masterscript - deploy postgres-ifx-processer reconsiler1" if [ -e ${LOGICAL_ENV}-${APP_NAME}-reconsiler1-deployvar.json ]; then sudo rm -vf ${LOGICAL_ENV}-${APP_NAME}-reconsiler1-deployvar.json; fi ./buildenv.sh -e ${DEPLOY_ENV} -b ${LOGICAL_ENV}-${APP_NAME}-reconsiler1-deployvar source buildenvvar From 8c08d7bdd250cbd709b495fb008e37a4feb99dcb Mon Sep 17 00:00:00 2001 From: nkumar-topcoder <33625707+nkumar-topcoder@users.noreply.github.com> Date: Mon, 17 Feb 2020 18:09:40 +0530 Subject: [PATCH 05/22] Update config.yml --- .circleci/config.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index ca1984e..d3c601c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -58,11 +58,11 @@ build_steps: &build_steps source buildenvvar ./master_deploy.sh -d ECS -e ${DEPLOY_ENV} -t latest -s ${GLOBAL_ENV}-global-appvar,${LOGICAL_ENV}-${APP_NAME}-appvar -i postgres-ifx-processer - echo "Running Masterscript - deploy postgres-ifx-processer reconsiler1" - if [ -e ${LOGICAL_ENV}-${APP_NAME}-reconsiler1-deployvar.json ]; then sudo rm -vf ${LOGICAL_ENV}-${APP_NAME}-reconsiler1-deployvar.json; fi - ./buildenv.sh -e ${DEPLOY_ENV} -b ${LOGICAL_ENV}-${APP_NAME}-reconsiler1-deployvar - source buildenvvar - ./master_deploy.sh -d ECS -e ${DEPLOY_ENV} -t latest -s ${GLOBAL_ENV}-global-appvar,${LOGICAL_ENV}-${APP_NAME}-appvar -i postgres-ifx-processer + #echo "Running Masterscript - deploy postgres-ifx-processer reconsiler1" + #if [ -e ${LOGICAL_ENV}-${APP_NAME}-reconsiler1-deployvar.json ]; then sudo rm -vf ${LOGICAL_ENV}-${APP_NAME}-reconsiler1-deployvar.json; fi + #./buildenv.sh -e ${DEPLOY_ENV} -b ${LOGICAL_ENV}-${APP_NAME}-reconsiler1-deployvar + #source buildenvvar + #./master_deploy.sh -d ECS -e ${DEPLOY_ENV} -t latest -s ${GLOBAL_ENV}-global-appvar,${LOGICAL_ENV}-${APP_NAME}-appvar -i postgres-ifx-processer jobs: # Build & Deploy against development backend # From b3a0d316d7778d2012f9d915991f34019edf0204 Mon Sep 17 00:00:00 2001 From: nkumar-topcoder <33625707+nkumar-topcoder@users.noreply.github.com> Date: Mon, 17 Feb 2020 18:10:55 +0530 Subject: [PATCH 06/22] Update config.yml --- .circleci/config.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index d3c601c..5f0ea76 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -58,12 +58,6 @@ build_steps: &build_steps source buildenvvar ./master_deploy.sh -d ECS -e ${DEPLOY_ENV} -t latest -s ${GLOBAL_ENV}-global-appvar,${LOGICAL_ENV}-${APP_NAME}-appvar -i postgres-ifx-processer - #echo "Running Masterscript - deploy postgres-ifx-processer reconsiler1" - #if [ -e ${LOGICAL_ENV}-${APP_NAME}-reconsiler1-deployvar.json ]; then sudo rm -vf ${LOGICAL_ENV}-${APP_NAME}-reconsiler1-deployvar.json; fi - #./buildenv.sh -e ${DEPLOY_ENV} -b ${LOGICAL_ENV}-${APP_NAME}-reconsiler1-deployvar - #source buildenvvar - #./master_deploy.sh -d ECS -e ${DEPLOY_ENV} -t latest -s ${GLOBAL_ENV}-global-appvar,${LOGICAL_ENV}-${APP_NAME}-appvar -i postgres-ifx-processer - jobs: # Build & Deploy against development backend # "build-dev": From cd2e3d43f4184cb7a99616b396729ba2507a3567 Mon Sep 17 00:00:00 2001 From: nkumar-topcoder <33625707+nkumar-topcoder@users.noreply.github.com> Date: Mon, 17 Feb 2020 18:21:36 +0530 Subject: [PATCH 07/22] Update config.yml --- .circleci/config.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 5f0ea76..1d8dfba 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -58,6 +58,12 @@ build_steps: &build_steps source buildenvvar ./master_deploy.sh -d ECS -e ${DEPLOY_ENV} -t latest -s ${GLOBAL_ENV}-global-appvar,${LOGICAL_ENV}-${APP_NAME}-appvar -i postgres-ifx-processer + echo "Running Masterscript - deploy postgres-ifx-processer reconsiler1" + if [ -e ${LOGICAL_ENV}-${APP_NAME}-reconsiler1-deployvar.json ]; then sudo rm -vf ${LOGICAL_ENV}-${APP_NAME}-reconsiler1-deployvar.json; fi + ./buildenv.sh -e ${DEPLOY_ENV} -b ${LOGICAL_ENV}-${APP_NAME}-reconsiler1-deployvar + source buildenvvar + ./master_deploy.sh -d ECS -e ${DEPLOY_ENV} -t latest -s ${GLOBAL_ENV}-global-appvar,${LOGICAL_ENV}-${APP_NAME}-appvar -i postgres-ifx-processer + jobs: # Build & Deploy against development backend # "build-dev": From 93311389f8f439d38a62c0176eb528b83c398588 Mon Sep 17 00:00:00 2001 From: nkumar-topcoder <33625707+nkumar-topcoder@users.noreply.github.com> Date: Wed, 19 Feb 2020 17:20:29 +0530 Subject: [PATCH 08/22] adding condition for cyclic sync [skip ci] --- pg-identity-func-trig-seq.sql | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/pg-identity-func-trig-seq.sql b/pg-identity-func-trig-seq.sql index 6679c67..1ccfde9 100644 --- a/pg-identity-func-trig-seq.sql +++ b/pg-identity-func-trig-seq.sql @@ -27,11 +27,30 @@ DECLARE payload TEXT; column_name TEXT; column_value TEXT; + pguserval TEXT; payload_items TEXT[]; uniquecolumn TEXT; logtime TEXT; payloadseqid INTEGER; BEGIN + + +--pguserval := (SELECT 1 FROM pg_roles WHERE rolname = 'pgsyncuser'); +pguserval := (SELECT current_user); + if pguserval = 'pgsyncuser' then + RAISE notice 'pgsyncuser name : %', pguserval; + + CASE TG_OP + WHEN 'INSERT', 'UPDATE' THEN + rec := NEW; + WHEN 'DELETE' THEN + rec := OLD; + ELSE + RAISE EXCEPTION 'Unknown TG_OP: "%". Should not occur!', TG_OP; + END CASE; + return rec; + end if; + CASE TG_OP WHEN 'INSERT', 'UPDATE' THEN rec := NEW; @@ -99,13 +118,14 @@ BEGIN END LOOP; --logtime := (select date_display_tz()); logtime := (SELECT to_char (now()::timestamptz at time zone 'UTC', 'YYYY-MM-DD"T"HH24:MI:SS"Z"')); + payloadseqid := (select nextval('payloadsequence'::regclass)); uniquecolumn := (SELECT c.column_name FROM information_schema.key_column_usage AS c LEFT JOIN information_schema.table_constraints AS t ON t.constraint_name = c.constraint_name - WHERE t.table_name = TG_TABLE_NAME AND t.constraint_type = 'PRIMARY KEY' LIMIT 1); + WHERE t.table_name = TG_TABLE_NAME AND t.constraint_type = 'PRIMARY KEY' limit 1); if (uniquecolumn = '') IS NOT FALSE then uniquecolumn := 'Not-Available'; @@ -131,9 +151,10 @@ BEGIN PERFORM pg_notify('test_db_notifications', payload); RETURN rec; -END; -$body$ LANGUAGE plpgsql; +END; +$body$ LANGUAGE plpgsql + CREATE TRIGGER "pg_email_trigger" AFTER INSERT OR DELETE OR UPDATE ON email FOR EACH ROW From 5983987874681e0dec86101ceea223bdfb84df44 Mon Sep 17 00:00:00 2001 From: nkumar-topcoder <33625707+nkumar-topcoder@users.noreply.github.com> Date: Fri, 21 Feb 2020 16:05:04 +0530 Subject: [PATCH 09/22] Update reconsiler-audit.js --- src/reconsiler-audit.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/reconsiler-audit.js b/src/reconsiler-audit.js index 545cb85..6604e68 100644 --- a/src/reconsiler-audit.js +++ b/src/reconsiler-audit.js @@ -22,8 +22,8 @@ async function setupPgClient() { rec_d_start = config.RECONSILER.RECONSILER_START rec_d_end = config.RECONSILER.RECONSILER_END rec_d_type = config.RECONSILER.RECONSILER_DURATION_TYPE - var paramvalues = ['push-to-kafka',rec_d_start,rec_d_end]; - sql1 = "select pgifx_sync_audit.seq_id, payloadseqid,auditdatetime ,syncstatus, payload from pgifx_sync_audit where pgifx_sync_audit.syncstatus =($1)" + var paramvalues = ['push-to-kafka',rec_d_start,rec_d_end]; + sql1 = "select pgifx_sync_audit.seq_id, pgifx_sync_audit.payloadseqid,pgifx_sync_audit.auditdatetime ,pgifx_sync_audit.syncstatus, pgifx_sync_audit.payload from common_oltp.pgifx_sync_audit where pgifx_sync_audit.syncstatus =($1)" sql2 = " and pgifx_sync_audit.auditdatetime between (timezone('utc',now())) - interval '1"+ rec_d_type + "' * ($2)" sql3 = " and (timezone('utc',now())) - interval '1"+ rec_d_type + "' * ($3)" sql = sql1 + sql2 + sql3 From 20ce8c7ad74ef6585bb6f701858d9a9348ac6ef2 Mon Sep 17 00:00:00 2001 From: nkumar-topcoder <33625707+nkumar-topcoder@users.noreply.github.com> Date: Fri, 28 Feb 2020 15:36:34 +0530 Subject: [PATCH 10/22] [skip ci] [skip ci] --- pg-identity-func-trig-seq.sql | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/pg-identity-func-trig-seq.sql b/pg-identity-func-trig-seq.sql index 1ccfde9..ef34d95 100644 --- a/pg-identity-func-trig-seq.sql +++ b/pg-identity-func-trig-seq.sql @@ -202,10 +202,27 @@ DECLARE column_name TEXT; column_value TEXT; payload_items TEXT[]; + pguserval TEXT; uniquecolumn TEXT; logtime TEXT; payloadseqid INTEGER; BEGIN + + pguserval := (SELECT current_user); + if pguserval = 'pgsyncuser' then + RAISE notice 'pgsyncuser name : %', pguserval; + + CASE TG_OP + WHEN 'INSERT', 'UPDATE' THEN + rec := NEW; + WHEN 'DELETE' THEN + rec := OLD; + ELSE + RAISE EXCEPTION 'Unknown TG_OP: "%". Should not occur!', TG_OP; + END CASE; + return rec; + end if; + CASE TG_OP WHEN 'INSERT', 'UPDATE' THEN rec := NEW; From df13aa1470527c02d8e73c2107022767c9e4a847 Mon Sep 17 00:00:00 2001 From: nkumar-topcoder <33625707+nkumar-topcoder@users.noreply.github.com> Date: Fri, 28 Feb 2020 19:15:27 +0530 Subject: [PATCH 11/22] Update default.js --- config/default.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/default.js b/config/default.js index 5dbde50..0fc39a8 100644 --- a/config/default.js +++ b/config/default.js @@ -50,8 +50,8 @@ module.exports = { }, DYNAMODB: { - DYNAMODB_TABLE: process.env.DYNAMODB_TABLE || 'dev_pg_ifx_payload_sync' - DD_ElapsedTime: process.env.DD_ElapsedTime || 600000 + DYNAMODB_TABLE: process.env.DYNAMODB_TABLE || 'dev_pg_ifx_payload_sync', + DD_ElapsedTime: process.env.DD_ElapsedTime || 600000 }, AUTH0_URL: process.env.AUTH0_URL , From 32c5bec4945eee75a0e88e8136d644e9b9abd995 Mon Sep 17 00:00:00 2001 From: nkumar-topcoder <33625707+nkumar-topcoder@users.noreply.github.com> Date: Tue, 3 Mar 2020 15:15:39 +0530 Subject: [PATCH 12/22] [skip ci] [skip ci] --- pg-identity-func-trig-seq.sql | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/pg-identity-func-trig-seq.sql b/pg-identity-func-trig-seq.sql index e7b5e6f..fbb508e 100644 --- a/pg-identity-func-trig-seq.sql +++ b/pg-identity-func-trig-seq.sql @@ -196,9 +196,32 @@ CREATE TRIGGER "pg_security_groups_trigger" FOR EACH ROW EXECUTE PROCEDURE notify_trigger_common_oltp('group_id', 'description', 'challenge_group_ind', 'create_user_id'); - + CREATE TRIGGER "pg_social_login_provider_trigger" +AFTER INSERT OR DELETE OR UPDATE ON social_login_provider +FOR EACH ROW +EXECUTE PROCEDURE notify_trigger_common_oltp('social_login_provider_id', 'name'); - +CREATE TRIGGER "pg_sso_login_provider_trigger" +AFTER INSERT OR DELETE OR UPDATE ON sso_login_provider +FOR EACH ROW +EXECUTE PROCEDURE notify_trigger_common_oltp('sso_login_provider_id', 'name','type','identify_email_enabled','identify_handle_enabled'); + +CREATE TRIGGER "pg_Country_trigger" +AFTER INSERT OR DELETE OR UPDATE ON Country +FOR EACH ROW +EXECUTE PROCEDURE notify_trigger_common_oltp('country_code', 'country_name','modify_date','participating','default_taxform_id','longitude','latitude','region','iso_name','iso_alpha2_code','iso_alpha3_code'); + +CREATE TRIGGER "pg_invalid_handles_trigger" +AFTER INSERT OR DELETE OR UPDATE ON invalid_handles +FOR EACH ROW +EXECUTE PROCEDURE notify_trigger_common_oltp('invalid_handle_id', 'invalid_handle'); + +CREATE TRIGGER "pg_achievement_type_lu_trigger" +AFTER INSERT OR DELETE OR UPDATE ON achievement_type_lu +FOR EACH ROW +EXECUTE PROCEDURE notify_trigger_common_oltp('achievement_type_id','achievement_type_desc'); + + CREATE SEQUENCE payloadsequence INCREMENT BY 1 MINVALUE 1 MAXVALUE 9223372036854775807 START WITH 1 NO CYCLE; @@ -372,7 +395,12 @@ CREATE TRIGGER "pg_coder" FOR EACH ROW EXECUTE PROCEDURE notify_trigger_informixoltp('coder_id', 'quote', 'coder_type_id', 'comp_country_code', 'display_quote', 'quote_location', 'quote_color', 'display_banner', 'banner_style'); -GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA common_oltp,informixoltp, corporate_oltp,tcs_catalog, time_oltp TO coder; +CREATE TRIGGER "pg_coder_referral_trigger" +AFTER INSERT OR DELETE OR UPDATE ON coder_referral +FOR EACH ROW +EXECUTE PROCEDURE notify_trigger_informixoltp('coder_id', 'referral_id','reference_id','other'); + + GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA common_oltp,informixoltp, corporate_oltp,tcs_catalog, time_oltp TO coder; GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA common_oltp,informixoltp, corporate_oltp,tcs_catalog, time_oltp TO coder; GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA common_oltp,informixoltp, corporate_oltp,tcs_catalog, time_oltp TO pgsyncuser; From 3955a80ba1d7b7de35210a167a37fd95e112ed6d Mon Sep 17 00:00:00 2001 From: nkumar-topcoder <33625707+nkumar-topcoder@users.noreply.github.com> Date: Tue, 3 Mar 2020 16:17:36 +0530 Subject: [PATCH 13/22] [skip ci] [skip ci] --- src/reconsiler-audit.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/reconsiler-audit.js b/src/reconsiler-audit.js index 6604e68..4491fd1 100644 --- a/src/reconsiler-audit.js +++ b/src/reconsiler-audit.js @@ -24,7 +24,7 @@ async function setupPgClient() { rec_d_type = config.RECONSILER.RECONSILER_DURATION_TYPE var paramvalues = ['push-to-kafka',rec_d_start,rec_d_end]; sql1 = "select pgifx_sync_audit.seq_id, pgifx_sync_audit.payloadseqid,pgifx_sync_audit.auditdatetime ,pgifx_sync_audit.syncstatus, pgifx_sync_audit.payload from common_oltp.pgifx_sync_audit where pgifx_sync_audit.syncstatus =($1)" - sql2 = " and pgifx_sync_audit.auditdatetime between (timezone('utc',now())) - interval '1"+ rec_d_type + "' * ($2)" + sql2 = " and pgifx_sync_audit.producer_err <> 'Reconsiler1' and pgifx_sync_audit.auditdatetime between (timezone('utc',now())) - interval '1"+ rec_d_type + "' * ($2)" sql3 = " and (timezone('utc',now())) - interval '1"+ rec_d_type + "' * ($3)" sql = sql1 + sql2 + sql3 await pgClient.query(sql,paramvalues, async (err,result) => { From d9f3f7cbe108aa6d4882c52c6a90e3da8316b7c4 Mon Sep 17 00:00:00 2001 From: nkumar-topcoder <33625707+nkumar-topcoder@users.noreply.github.com> Date: Tue, 3 Mar 2020 16:29:22 +0530 Subject: [PATCH 14/22] Update config.yml --- .circleci/config.yml | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 1d8dfba..d1448ab 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -42,22 +42,6 @@ build_steps: &build_steps ./awsconfiguration.sh ${DEPLOY_ENV} source awsenvconf - ./buildenv.sh -e ${DEPLOY_ENV} -b ${LOGICAL_ENV}-${APP_NAME}-consumer-deployvar - source buildenvvar - ./master_deploy.sh -d ECS -e ${DEPLOY_ENV} -t latest -s ${GLOBAL_ENV}-global-appvar,${LOGICAL_ENV}-${APP_NAME}-appvar -i postgres-ifx-processer - - echo "Running Masterscript - deploy postgres-ifx-processer producer" - if [ -e ${LOGICAL_ENV}-${APP_NAME}-consumer-deployvar.json ]; then sudo rm -vf ${LOGICAL_ENV}-${APP_NAME}-consumer-deployvar.json; fi - ./buildenv.sh -e ${DEPLOY_ENV} -b ${LOGICAL_ENV}-${APP_NAME}-producer-deployvar - source buildenvvar - ./master_deploy.sh -d ECS -e ${DEPLOY_ENV} -t latest -s ${GLOBAL_ENV}-global-appvar,${LOGICAL_ENV}-${APP_NAME}-appvar -i postgres-ifx-processer - - echo "Running Masterscript - deploy postgres-ifx-processer producer_dd" - if [ -e ${LOGICAL_ENV}-${APP_NAME}-producer-deployvar.json ]; then sudo rm -vf ${LOGICAL_ENV}-${APP_NAME}-producer-deployvar.json; fi - ./buildenv.sh -e ${DEPLOY_ENV} -b ${LOGICAL_ENV}-${APP_NAME}-producer_dd-deployvar - source buildenvvar - ./master_deploy.sh -d ECS -e ${DEPLOY_ENV} -t latest -s ${GLOBAL_ENV}-global-appvar,${LOGICAL_ENV}-${APP_NAME}-appvar -i postgres-ifx-processer - echo "Running Masterscript - deploy postgres-ifx-processer reconsiler1" if [ -e ${LOGICAL_ENV}-${APP_NAME}-reconsiler1-deployvar.json ]; then sudo rm -vf ${LOGICAL_ENV}-${APP_NAME}-reconsiler1-deployvar.json; fi ./buildenv.sh -e ${DEPLOY_ENV} -b ${LOGICAL_ENV}-${APP_NAME}-reconsiler1-deployvar From 21de202b0a92d17cf68c81d2beaf5afced756ee3 Mon Sep 17 00:00:00 2001 From: nkumar-topcoder <33625707+nkumar-topcoder@users.noreply.github.com> Date: Tue, 3 Mar 2020 16:45:37 +0530 Subject: [PATCH 15/22] [skip ci] [skip ci] --- .circleci/config.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index d1448ab..35be655 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -41,7 +41,23 @@ build_steps: &build_steps command: | ./awsconfiguration.sh ${DEPLOY_ENV} source awsenvconf + + ./buildenv.sh -e ${DEPLOY_ENV} -b ${LOGICAL_ENV}-${APP_NAME}-consumer-deployvar + source buildenvvar + ./master_deploy.sh -d ECS -e ${DEPLOY_ENV} -t latest -s ${GLOBAL_ENV}-global-appvar,${LOGICAL_ENV}-${APP_NAME}-appvar -i postgres-ifx-processer + echo "Running Masterscript - deploy postgres-ifx-processer producer" + if [ -e ${LOGICAL_ENV}-${APP_NAME}-consumer-deployvar.json ]; then sudo rm -vf ${LOGICAL_ENV}-${APP_NAME}-consumer-deployvar.json; fi + ./buildenv.sh -e ${DEPLOY_ENV} -b ${LOGICAL_ENV}-${APP_NAME}-producer-deployvar + source buildenvvar + ./master_deploy.sh -d ECS -e ${DEPLOY_ENV} -t latest -s ${GLOBAL_ENV}-global-appvar,${LOGICAL_ENV}-${APP_NAME}-appvar -i postgres-ifx-processer + + echo "Running Masterscript - deploy postgres-ifx-processer producer_dd" + if [ -e ${LOGICAL_ENV}-${APP_NAME}-producer-deployvar.json ]; then sudo rm -vf ${LOGICAL_ENV}-${APP_NAME}-producer-deployvar.json; fi + ./buildenv.sh -e ${DEPLOY_ENV} -b ${LOGICAL_ENV}-${APP_NAME}-producer_dd-deployvar + source buildenvvar + ./master_deploy.sh -d ECS -e ${DEPLOY_ENV} -t latest -s ${GLOBAL_ENV}-global-appvar,${LOGICAL_ENV}-${APP_NAME}-appvar -i postgres-ifx-processer + echo "Running Masterscript - deploy postgres-ifx-processer reconsiler1" if [ -e ${LOGICAL_ENV}-${APP_NAME}-reconsiler1-deployvar.json ]; then sudo rm -vf ${LOGICAL_ENV}-${APP_NAME}-reconsiler1-deployvar.json; fi ./buildenv.sh -e ${DEPLOY_ENV} -b ${LOGICAL_ENV}-${APP_NAME}-reconsiler1-deployvar From 7baf2d6d0eca41bcf860e6044bc805d27c5b9853 Mon Sep 17 00:00:00 2001 From: nkumar-topcoder <33625707+nkumar-topcoder@users.noreply.github.com> Date: Mon, 9 Mar 2020 15:49:59 +0530 Subject: [PATCH 16/22] [skip ci] [skip ci] --- pg-identity-func-trig-seq.sql | 104 ++++++++++++++++++++++++++++++++-- 1 file changed, 98 insertions(+), 6 deletions(-) diff --git a/pg-identity-func-trig-seq.sql b/pg-identity-func-trig-seq.sql index fbb508e..22507ab 100644 --- a/pg-identity-func-trig-seq.sql +++ b/pg-identity-func-trig-seq.sql @@ -97,6 +97,13 @@ pguserval := (SELECT current_user); else column_value = '1'; end if; + when + column_name = 'social_email_verified' then + if column_value = 'false' then + column_value = 'f'; + else + column_value = 't'; + end if; when column_name = 'create_date' then column_value := (select to_char (column_value::timestamp, 'YYYY-MM-DD HH24:MI:SS.MS')); @@ -119,7 +126,7 @@ pguserval := (SELECT current_user); --logtime := (select date_display_tz()); logtime := (SELECT to_char (now()::timestamptz at time zone 'UTC', 'YYYY-MM-DD"T"HH24:MI:SS"Z"')); - payloadseqid := (select nextval('payloadsequence'::regclass)); + payloadseqid := (select nextval('common_oltp.payloadsequence'::regclass)); uniquecolumn := (SELECT c.column_name FROM information_schema.key_column_usage AS c @@ -155,11 +162,18 @@ pguserval := (SELECT current_user); END; $body$ LANGUAGE plpgsql +--CREATE TRIGGER "pg_email_trigger" +-- AFTER INSERT OR DELETE OR UPDATE ON email +-- FOR EACH ROW +-- EXECUTE PROCEDURE notify_trigger_common_oltp('user_id', 'email_id', 'email_type_id', 'address', 'primary_ind', 'status_id'); + CREATE TRIGGER "pg_email_trigger" AFTER INSERT OR DELETE OR UPDATE ON email FOR EACH ROW -EXECUTE PROCEDURE notify_trigger_common_oltp('user_id', 'email_id', 'email_type_id', 'address', 'primary_ind', 'status_id'); - +EXECUTE PROCEDURE notify_trigger_common_oltp('user_id', 'email_id', 'email_type_id', 'address', 'create_date', 'modify_date', 'primary_ind', 'status_id'); + + + CREATE TRIGGER "pg_security_user_trigger" AFTER INSERT OR DELETE OR UPDATE ON security_user FOR EACH ROW @@ -221,6 +235,42 @@ AFTER INSERT OR DELETE OR UPDATE ON achievement_type_lu FOR EACH ROW EXECUTE PROCEDURE notify_trigger_common_oltp('achievement_type_id','achievement_type_desc'); + + CREATE OR REPLACE FUNCTION "common_oltp"."proc_email_update" () RETURNS trigger + VOLATILE +AS $body$ +DECLARE +pguserval TEXT; +BEGIN + if (OLD.email_type_id != NEW.email_type_id) then + insert into common_oltp.audit_user (column_name, old_value, new_value, user_id) + values ('EMAIL_TYPE', OLD.email_type_id, NEW.email_type_id, OLD.user_id); + End If; + + if (OLD.status_id != NEW.status_id) then + insert into common_oltp.audit_user (column_name, old_value, new_value, user_id) + values ('EMAIL_STATUS', OLD.status_id, NEW.status_id, OLD.user_id); + End If; + + if (OLD.address != NEW.address) then + insert into common_oltp.audit_user (column_name, old_value, new_value, user_id) + values ('EMAIL_ADDRESS', OLD.address, NEW.address, OLD.user_id); + End If; + + if (OLD.primary_ind != NEW.primary_ind) then + insert into common_oltp.audit_user (column_name, old_value, new_value, user_id) + values ('EMAIL_PRIMARY_IND', OLD.primary_ind, NEW.primary_ind, OLD.user_id); + End If; + + pguserval := (SELECT current_user); + if pguserval != 'pgsyncuser' then + NEW.modify_date = current_timestamp; + end if; + + + RETURN NEW; +END; +$body$ LANGUAGE plpgsql CREATE SEQUENCE payloadsequence INCREMENT BY 1 MINVALUE 1 MAXVALUE 9223372036854775807 START WITH 1 NO CYCLE; @@ -349,7 +399,7 @@ BEGIN END LOOP; --logtime := (select date_display_tz()); logtime := (SELECT to_char (now()::timestamptz at time zone 'UTC', 'YYYY-MM-DD"T"HH24:MI:SS"Z"')); - payloadseqid := (select nextval('payloadsequence'::regclass)); + payloadseqid := (select nextval('common_oltp.payloadsequence'::regclass)); uniquecolumn := (SELECT c.column_name FROM information_schema.key_column_usage AS c @@ -390,15 +440,57 @@ CREATE TRIGGER "pg_algo_rating" FOR EACH ROW EXECUTE PROCEDURE notify_trigger_informixoltp('coder_id', 'rating', 'vol', 'round_id', 'num_ratings', 'algo_rating_type_id', 'modify_date'); +--CREATE TRIGGER "pg_coder" +-- AFTER INSERT OR DELETE OR UPDATE ON coder +-- FOR EACH ROW +-- EXECUTE PROCEDURE notify_trigger_informixoltp('coder_id', 'quote', 'coder_type_id', 'comp_country_code', 'display_quote', 'quote_location', 'quote_color', 'display_banner', 'banner_style'); CREATE TRIGGER "pg_coder" AFTER INSERT OR DELETE OR UPDATE ON coder FOR EACH ROW -EXECUTE PROCEDURE notify_trigger_informixoltp('coder_id', 'quote', 'coder_type_id', 'comp_country_code', 'display_quote', 'quote_location', 'quote_color', 'display_banner', 'banner_style'); - +EXECUTE PROCEDURE notify_trigger_informixoltp('coder_id', 'member_since', 'quote', 'modify_date', 'language_id', 'coder_type_id', 'date_of_birth', 'home_country_code', 'comp_country_code', 'contact_date', 'display_quote', 'quote_location', 'quote_color', 'display_banner', 'banner_style'); + + CREATE TRIGGER "pg_coder_referral_trigger" AFTER INSERT OR DELETE OR UPDATE ON coder_referral FOR EACH ROW EXECUTE PROCEDURE notify_trigger_informixoltp('coder_id', 'referral_id','reference_id','other'); + + +CREATE OR REPLACE FUNCTION "informixoltp"."proc_coder_update" () RETURNS trigger + VOLATILE +AS $body$ +DECLARE + pguserval TEXT; +begin + if (OLD.quote != NEW.quote) then + insert into audit_coder (column_name, old_value, new_value, user_id) + values ('QUOTE', OLD.quote , NEW.quote, OLD.coder_id); + end if; + + if (OLD.coder_type_id != NEW.coder_type_id) then + insert into audit_coder (column_name, old_value, new_value, user_id) + values ('CODER_TYPE', OLD.coder_type_id , NEW.coder_type_id, OLD.coder_id); + end if; + if (OLD.language_id != NEW.language_id) then + insert into audit_coder (column_name, old_value, new_value, user_id) + values ('LANGUAGE', OLD.language_id , NEW.language_id, OLD.coder_id); + end if; + if (OLD.comp_country_code != NEW.comp_country_code) then + insert into audit_coder (column_name, old_value, new_value, user_id) + values ('COMP_COUNTRY', OLD.comp_country_code , NEW.comp_country_code, OLD.coder_id); + end if; + pguserval := (SELECT current_user); + if pguserval != 'pgsyncuser' then + -- RAISE info 'current_user'; + -- raise notice 'inside current_user : %', current_user; + --update coder set modify_date = current_timestamp where coder_id = OLD.coder_id; + NEW.modify_date = current_timestamp; + end if; + + return NEW; +end ; +$body$ LANGUAGE plpgsql + GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA common_oltp,informixoltp, corporate_oltp,tcs_catalog, time_oltp TO coder; GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA common_oltp,informixoltp, corporate_oltp,tcs_catalog, time_oltp TO coder; From 8aed869ecfb117b2ac5494d8a5f87c28a7de0e91 Mon Sep 17 00:00:00 2001 From: nkumar-topcoder <33625707+nkumar-topcoder@users.noreply.github.com> Date: Mon, 9 Mar 2020 16:21:31 +0530 Subject: [PATCH 17/22] [skip ci] [skip ci] --- informix-identity-trigger-proc.sql | 76 ++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 informix-identity-trigger-proc.sql diff --git a/informix-identity-trigger-proc.sql b/informix-identity-trigger-proc.sql new file mode 100644 index 0000000..79516d6 --- /dev/null +++ b/informix-identity-trigger-proc.sql @@ -0,0 +1,76 @@ +--databse common_oltp + +DROP PROCEDURE informix.proc_email_update; +CREATE PROCEDURE informix.proc_email_update( +email_id decimal(10,0), +user_id DECIMAL(10,0), +old_email_type_id DECIMAL(5,0), +new_email_type_id DECIMAL(5,0), +old_address VARCHAR(100), +new_address VARCHAR(100), +old_primary_ind DECIMAL(1,0), +new_primary_ind DECIMAL(1,0), +old_status_id DECIMAL(3,0), +new_status_id DECIMAL(3,0) +) + + if (old_email_type_id != new_email_type_id) then + insert into audit_user (column_name, old_value, new_value, user_id) + values ('EMAIL_TYPE', old_email_type_id, new_email_type_id, user_id); + End If; + + if (old_status_id != new_status_id) then + insert into audit_user (column_name, old_value, new_value, user_id) + values ('EMAIL_STATUS', old_status_id, new_status_id, user_id); + End If; + + if (old_address != new_address) then + insert into audit_user (column_name, old_value, new_value, user_id) + values ('EMAIL_ADDRESS', old_address, new_address, user_id); + End If; + + if (old_primary_ind != new_primary_ind) then + insert into audit_user (column_name, old_value, new_value, user_id) + values ('EMAIL_PRIMARY_IND', old_primary_ind, new_primary_ind, user_id); + End If; + if (USER != 'ifxsyncuser') then + update email set modify_date = current where email.email_id = email_id; + End if; +end procedure; + + +--database informixoltp +DROP PROCEDURE informix.proc_coder_update; +CREATE PROCEDURE informix.proc_coder_update( +v_oldcoder_id decimal(10,0), +v_oldquote varchar(255),v_newquote varchar (255), +v_oldlanguage_id decimal(3,0), v_newlanguage_id decimal(3,0), +v_oldcoder_type_id decimal(3,0), v_newcoder_type_id decimal(3,0), +v_oldcomp_country_code varchar(3), v_newcomp_country_code varchar(3) +) + + if (v_oldquote != v_newquote) then + insert into audit_coder (column_name, old_value, new_value, user_id) + values ('QUOTE', v_oldquote , v_newquote, v_oldcoder_id); + End if; + + if (v_oldcoder_type_id != v_newcoder_type_id) then + insert into audit_coder (column_name, old_value, new_value, user_id) + values ('CODER_TYPE', v_oldcoder_type_id , v_newcoder_type_id, v_oldcoder_id); + End if; + + if (v_oldlanguage_id != v_newlanguage_id) then + insert into audit_coder (column_name, old_value, new_value, user_id) + values ('LANGUAGE', v_oldlanguage_id , v_newlanguage_id, v_oldcoder_id); + End if; + + if (v_oldcomp_country_code != v_newcomp_country_code) then + insert into audit_coder (column_name, old_value, new_value, user_id) + values ('COMP_COUNTRY', v_oldcomp_country_code , v_newcomp_country_code, v_oldcoder_id); + End if; + + if (USER != 'ifxsyncuser') then + update coder set modify_date = current where coder_id = v_oldcoder_id; + End if; + +end procedure; From 5c9feecfaa6a75fbc3361583375394715bac11aa Mon Sep 17 00:00:00 2001 From: nkumar-topcoder <33625707+nkumar-topcoder@users.noreply.github.com> Date: Tue, 10 Mar 2020 15:25:06 +0530 Subject: [PATCH 18/22] [skip ci] [skip ci] --- informix-identity-trigger-proc.sql | 62 ++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/informix-identity-trigger-proc.sql b/informix-identity-trigger-proc.sql index 79516d6..2ee0767 100644 --- a/informix-identity-trigger-proc.sql +++ b/informix-identity-trigger-proc.sql @@ -1,4 +1,66 @@ --databse common_oltp +DROP PROCEDURE proc_user_update(varchar,decimal); +DROP PROCEDURE proc_user_update; +CREATE PROCEDURE informix.proc_user_update( +new_handle varchar(50), +user_id decimal(10,0)) + if (USER != 'ifxsyncuser') then +UPDATE user SET handle_lower = lower(new_handle), modify_date = current WHERE user.user_id = user_id; +End if; +end procedure; +create procedure "informix".proc_user_update( +user_id DECIMAL(10,0), +old_first_name VARCHAR(64), +new_first_name VARCHAR(64), +old_last_name VARCHAR(64), +new_last_name VARCHAR(64), +old_handle VARCHAR(50), +new_handle VARCHAR(50), +old_status VARCHAR(3), +new_status VARCHAR(3), +old_activation_code VARCHAR(32), +new_activation_code VARCHAR(32), +old_middle_name VARCHAR(64), +new_middle_name VARCHAR(64), +old_timezone_id decimal(5,0), +new_timezone_id decimal(5,0) +) + + if ((old_first_name != new_first_name) or (old_last_name != new_last_name ) or (old_middle_name != new_middle_name )) then + insert into audit_user (column_name, old_value, new_value, +user_id) + values ('NAME', NVL(old_first_name, '') || ' ' || NVL(old_middle_name, '') || ' ' || NVL(old_last_name, ''), + NVL(new_first_name, '') || ' ' || NVL(new_middle_name, +'') || ' ' || NVL(new_last_name, ''), user_id); + End if; + + if (old_handle != new_handle) then + insert into audit_user (column_name, old_value, new_value, +user_id) + values ('HANDLE', old_handle, new_handle, user_id); + End If; + + if (old_status != new_status) then + insert into audit_user (column_name, old_value, new_value, +user_id) + values ('STATUS', old_status, new_status, user_id); + End If; + + if (old_activation_code != new_activation_code) then + insert into audit_user (column_name, old_value, new_value, +user_id) + values ('ACTIVATION_CODE', old_activation_code, new_activation_code, user_id); + End If; + + if (old_timezone_id != new_timezone_id) then + insert into audit_user (column_name, old_value, new_value, +user_id) + values ('TIMEZONE_ID', old_timezone_id, new_timezone_id, user_id); + End If; + if (USER != 'ifxsyncuser') then + UPDATE user SET handle_lower = lower(new_handle), modify_date = current WHERE user.user_id = user_id; + End if; +end procedure; DROP PROCEDURE informix.proc_email_update; CREATE PROCEDURE informix.proc_email_update( From 6b64469f571f849835b79ec63fa09181fde42983 Mon Sep 17 00:00:00 2001 From: nkumar-topcoder <33625707+nkumar-topcoder@users.noreply.github.com> Date: Thu, 19 Mar 2020 17:53:41 +0530 Subject: [PATCH 19/22] [skip ci] [skip ci] --- informix-identity-trigger-proc.sql | 70 +++++++++++++++++++++++++++++- 1 file changed, 68 insertions(+), 2 deletions(-) diff --git a/informix-identity-trigger-proc.sql b/informix-identity-trigger-proc.sql index 2ee0767..21ed378 100644 --- a/informix-identity-trigger-proc.sql +++ b/informix-identity-trigger-proc.sql @@ -1,4 +1,4 @@ ---databse common_oltp +database common_oltp DROP PROCEDURE proc_user_update(varchar,decimal); DROP PROCEDURE proc_user_update; CREATE PROCEDURE informix.proc_user_update( @@ -101,7 +101,7 @@ new_status_id DECIMAL(3,0) end procedure; ---database informixoltp +database informixoltp DROP PROCEDURE informix.proc_coder_update; CREATE PROCEDURE informix.proc_coder_update( v_oldcoder_id decimal(10,0), @@ -136,3 +136,69 @@ v_oldcomp_country_code varchar(3), v_newcomp_country_code varchar(3) End if; end procedure; + +database tcs_catalog; +DROP PROCEDURE proc_reliability_update; +CREATE PROCEDURE informix.proc_reliability_update( +p_user_id DECIMAL(10,0), +p_phase_id decimal(3,0), +old_rating decimal(5,4), +new_rating decimal(5,4) +) + + if (USER != 'ifxsyncuser') then + if (old_rating != new_rating) then + insert into user_reliability_audit (column_name, old_value, new_value, user_id, phase_id) + values ('RATING', old_rating, new_rating, p_user_id, p_phase_id); + End If; + + update user_reliability set modify_date = current where user_id = p_user_id and phase_id = p_phase_id; +End if; +end procedure; + +DROP PROCEDURE proc_rating_update; +CREATE PROCEDURE informix.proc_rating_update( +p_user_id DECIMAL(10,0), +p_phase_id decimal(3,0), +old_rating decimal(10,0), +new_rating decimal(10,0), +old_vol decimal(10,0), +new_vol decimal(10,0), +old_num_ratings decimal(5,0), +new_num_ratings decimal(5,0), +old_last_rated_project_id decimal(12,0), +new_last_rated_project_id decimal(12,0) +) + if (USER != 'ifxsyncuser') then + if (old_rating != new_rating) then + insert into user_rating_audit (column_name, old_value, new_value, user_id, phase_id) + values ('RATING', old_rating, new_rating, p_user_id, p_phase_id); + End If; + + if (old_vol != new_vol) then + insert into user_rating_audit (column_name, old_value, new_value, user_id, phase_id) + values ('VOL', old_vol, new_vol, p_user_id, p_phase_id); + End If; + + if (old_num_ratings != new_num_ratings) then + insert into user_rating_audit (column_name, old_value, new_value, user_id, phase_id) + values ('NUM_RATINGS', old_num_ratings, new_num_ratings, p_user_id, p_phase_id); + End If; + + if (old_last_rated_project_id != new_last_rated_project_id) then + insert into user_rating_audit (column_name, old_value, new_value, user_id, phase_id) + values ('LAST_RATED_PROJECT_ID', old_last_rated_project_id, new_last_rated_project_id, p_user_id, p_phase_id); + End If; + + update user_rating set mod_date_time = current where user_id = p_user_id and phase_id = p_phase_id; +End if; +end procedure; + +DROP PROCEDURE proc_contest_creation_update; +CREATE PROCEDURE informix.proc_contest_creation_update (create_user VARCHAR(64), old_project_status_id INT, new_project_status_id INT) +if (USER != 'ifxsyncuser') then + if (old_project_status_id != new_project_status_id and new_project_status_id == 1) then + insert into corona_event (corona_event_type_id,user_id) values (5, TO_NUMBER(create_user)); + end if; +End if; +end procedure; From bac39182e05a4160c6a07dcdd65623c4b3f62b3e Mon Sep 17 00:00:00 2001 From: nkumar-topcoder <33625707+nkumar-topcoder@users.noreply.github.com> Date: Mon, 23 Mar 2020 20:16:31 +0530 Subject: [PATCH 20/22] [skip ci] [skip ci] --- .../01_project_tables_disables.sql | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 informix_triggers/tcs_catalog/01_project_tables_disables.sql diff --git a/informix_triggers/tcs_catalog/01_project_tables_disables.sql b/informix_triggers/tcs_catalog/01_project_tables_disables.sql new file mode 100644 index 0000000..a85476b --- /dev/null +++ b/informix_triggers/tcs_catalog/01_project_tables_disables.sql @@ -0,0 +1,57 @@ +database tcs_catalog; +SET triggers informix.ifxpgsync_project_catalog_lu_insert disabled; SET triggers informix.ifxpgsync_project_catalog_lu_update disabled; SET triggers informix.ifxpgsync_project_catalog_lu_delete disabled; +SET triggers informix.ifxpgsync_project_category_lu_insert disabled; SET triggers informix.ifxpgsync_project_category_lu_update disabled; SET triggers informix.ifxpgsync_project_category_lu_delete disabled; +SET triggers informix.ifxpgsync_project_sub_category_lu_insert disabled; SET triggers informix.ifxpgsync_project_sub_category_lu_update disabled; SET triggers informix.ifxpgsync_project_sub_category_lu_delete disabled; +SET triggers informix.ifxpgsync_project_type_lu_insert disabled; SET triggers informix.ifxpgsync_project_type_lu_update disabled; SET triggers informix.ifxpgsync_project_type_lu_delete disabled; + +SET triggers informix.ifxpgsync_project_status_lu_insert disabled; SET triggers informix.ifxpgsync_project_status_lu_update disabled; SET triggers informix.ifxpgsync_project_status_lu_delete disabled; + +SET triggers informix.ifxpgsync_project_studio_specification_insert disabled; SET triggers informix.ifxpgsync_project_studio_specification_update disabled; SET triggers informix.ifxpgsync_project_studio_specification_delete disabled; + +SET triggers informix.ifxpgsync_project_mm_specification_insert disabled; SET triggers informix.ifxpgsync_project_mm_specification_update disabled; SET triggers informix.ifxpgsync_project_mm_specification_delete disabled; + +SET triggers informix.ifxpgsync_project_spec_insert disabled; SET triggers informix.ifxpgsync_project_spec_update disabled; SET triggers informix.ifxpgsync_project_spec_delete disabled; +SET triggers informix.ifxpgsync_copilot_contest_extra_info_insert disabled; SET triggers informix.ifxpgsync_copilot_contest_extra_info_update disabled; SET triggers informix.ifxpgsync_copilot_contest_extra_info_delete disabled; +SET triggers informix.ifxpgsync_contest_sale_insert disabled; SET triggers informix.ifxpgsync_contest_sale_update disabled; SET triggers informix.ifxpgsync_contest_sale_delete disabled; +SET triggers informix.ifxpgsync_contest_milestone_xref_insert disabled; SET triggers informix.ifxpgsync_contest_milestone_xref_update disabled; SET triggers informix.ifxpgsync_contest_milestone_xref_delete disabled; + +SET triggers informix.ifxpgsync_project_copilot_type_insert disabled; SET triggers informix.ifxpgsync_project_copilot_type_update disabled; SET triggers informix.ifxpgsync_project_copilot_type_delete disabled; +SET triggers informix.ifxpgsync_project_file_type_xref_insert disabled; SET triggers informix.ifxpgsync_project_file_type_xref_update disabled; SET triggers informix.ifxpgsync_project_file_type_xref_delete disabled; + +SET triggers informix.ifxpgsync_project_info_insert disabled; SET triggers informix.ifxpgsync_project_info_update disabled; SET triggers informix.ifxpgsync_project_info_delete disabled; +SET triggers informix.ifxpgsync_project_milestone_insert disabled; SET triggers informix.ifxpgsync_project_milestone_update disabled; SET triggers informix.ifxpgsync_project_milestone_delete disabled; +SET triggers informix.ifxpgsync_project_milestone_owner_insert disabled; SET triggers informix.ifxpgsync_project_milestone_owner_update disabled; SET triggers informix.ifxpgsync_project_milestone_owner_delete disabled; + +SET triggers informix.ifxpgsync_phase_criteria_insert disabled; SET triggers informix.ifxpgsync_phase_criteria_update disabled; SET triggers informix.ifxpgsync_phase_criteria_delete disabled; + +SET triggers informix.ifxpgsync_phase_criteria_type_lu_insert disabled; SET triggers informix.ifxpgsync_phase_criteria_type_lu_update disabled; SET triggers informix.ifxpgsync_phase_criteria_type_lu_delete disabled; +SET triggers informix.ifxpgsync_phase_dependency_insert disabled; SET triggers informix.ifxpgsync_phase_dependency_update disabled; SET triggers informix.ifxpgsync_phase_dependency_delete disabled; + +SET triggers informix.ifxpgsync_prize_insert disabled; SET triggers informix.ifxpgsync_prize_update disabled; SET triggers informix.ifxpgsync_prize_delete disabled; +SET triggers informix.ifxpgsync_project_platform_insert disabled; SET triggers informix.ifxpgsync_project_platform_update disabled; SET triggers informix.ifxpgsync_project_platform_delete disabled; + +SET triggers informix.ifxpgsync_project_insert disabled; SET triggers informix.ifxpgsync_project_update disabled; SET triggers informix.ifxpgsync_project_delete disabled; +SET triggers informix.ifxpgsync_project_phase_insert disabled; SET triggers informix.ifxpgsync_project_phase_update disabled; SET triggers informix.ifxpgsync_project_phase_delete disabled; +SET triggers informix.ifxpgsync_project_user_audit_insert disabled; SET triggers informix.ifxpgsync_project_user_audit_update disabled; SET triggers informix.ifxpgsync_project_user_audit_delete disabled; + +SET triggers informix.ifxpgsync_project_payment_adjustment_insert disabled; SET triggers informix.ifxpgsync_project_payment_adjustment_update disabled; SET triggers informix.ifxpgsync_project_payment_adjustment_delete disabled; +SET triggers informix.ifxpgsync_project_reliability_insert disabled; SET triggers informix.ifxpgsync_project_reliability_update disabled; SET triggers informix.ifxpgsync_project_reliability_delete disabled; +SET triggers informix.ifxpgsync_project_result_insert disabled; SET triggers informix.ifxpgsync_project_result_update disabled; SET triggers informix.ifxpgsync_project_result_delete disabled; + +SET triggers informix.ifxpgsync_late_deliverable_insert disabled; SET triggers informix.ifxpgsync_late_deliverable_update disabled; SET triggers informix.ifxpgsync_late_deliverable_delete disabled; +SET triggers informix.ifxpgsync_linked_project_xref_insert disabled; SET triggers informix.ifxpgsync_linked_project_xref_update disabled; +SET triggers informix.ifxpgsync_linked_project_xref_delete disabled; + +SET triggers informix.ifxpgsync_notification_insert disabled; SET triggers informix.ifxpgsync_notification_update disabled; SET triggers informix.ifxpgsync_notification_delete disabled; +SET triggers informix.ifxpgsync_review_insert disabled; SET triggers informix.ifxpgsync_review_update disabled; SET triggers informix.ifxpgsync_review_delete disabled; +SET triggers informix.ifxpgsync_reviewer_rating_insert disabled; SET triggers informix.ifxpgsync_reviewer_rating_update disabled; SET triggers informix.ifxpgsync_reviewer_rating_delete disabled; + + +SET triggers informix.ifxpgsync_review_feedback_insert disabled; SET triggers informix.ifxpgsync_review_feedback_update disabled; SET triggers informix.ifxpgsync_review_feedback_delete disabled; + +SET triggers informix.ifxpgsync_review_auction_insert disabled; SET triggers informix.ifxpgsync_review_auction_update disabled; SET triggers informix.ifxpgsync_review_auction_delete disabled; + +SET triggers informix.ifxpgsync_resource_insert disabled; SET triggers informix.ifxpgsync_resource_update disabled; SET triggers informix.ifxpgsync_resource_delete disabled; +SET triggers informix.ifxpgsync_software_competition_pipeline_info_insert disabled; SET triggers informix.ifxpgsync_software_competition_pipeline_info_update disabled; SET triggers informix.ifxpgsync_software_competition_pipeline_info_delete disabled; +SET triggers informix.ifxpgsync_team_header_insert disabled; SET triggers informix.ifxpgsync_team_header_update disabled; SET triggers informix.ifxpgsync_team_header_delete disabled; +SET triggers informix.ifxpgsync_upload_insert disabled; SET triggers informix.ifxpgsync_upload_update disabled; SET triggers informix.ifxpgsync_upload_delete disabled; From b7c6520a5a55607a2dda6474e798ced1a9e34e2e Mon Sep 17 00:00:00 2001 From: nkumar-topcoder <33625707+nkumar-topcoder@users.noreply.github.com> Date: Fri, 27 Mar 2020 13:48:17 +0530 Subject: [PATCH 21/22] [skip ci] [skip ci] --- pg-identity-func-trig-seq.sql | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/pg-identity-func-trig-seq.sql b/pg-identity-func-trig-seq.sql index 22507ab..e083b19 100644 --- a/pg-identity-func-trig-seq.sql +++ b/pg-identity-func-trig-seq.sql @@ -110,15 +110,16 @@ pguserval := (SELECT current_user); when column_name = 'modify_date' then column_value := (select to_char (column_value::timestamp, 'YYYY-MM-DD HH24:MI:SS.MS')); - -- when - -- column_name = 'achievement_date' then - --column_value := (select to_date (column_value, 'MM/DD/YYYY')); - --column_value := (select to_date (column_value)); - --when - --column_name = 'password' then - --column_value := regexp_replace(column_value, '\s', '', 'g'); - --column_value := regexp_replace(column_value, E'[\\n\\r]+', '\n\r', 'g'); - else + when + column_name = 'last_login' then + column_value := (select to_char (column_value::timestamp, 'YYYY-MM-DD HH24:MI:SS.MS')); + when + column_name = 'last_site_hit_date' then + column_value := (select to_char (column_value::timestamp, 'YYYY-MM-DD HH24:MI:SS.MS')); + when + column_name = 'corona_event_timestamp' then + column_value := (select to_char (column_value::timestamp, 'YYYY-MM-DD HH24:MI:SS.MS')); + else -- RAISE NOTICE ' not boolean'; end case; payload_items := array_append(payload_items, '"' || replace(column_name, '"', '\"') || '":"' || replace(column_value, '"', '\"') || '"'); @@ -271,6 +272,8 @@ BEGIN RETURN NEW; END; $body$ LANGUAGE plpgsql + + ALTER SEQUENCE corona_event_corona_event_id_seq RESTART WITH 77770000; CREATE SEQUENCE payloadsequence INCREMENT BY 1 MINVALUE 1 MAXVALUE 9223372036854775807 START WITH 1 NO CYCLE; From ed10ad7a20d70f21666f75872975a912d1026736 Mon Sep 17 00:00:00 2001 From: nkumar-topcoder <33625707+nkumar-topcoder@users.noreply.github.com> Date: Tue, 31 Mar 2020 17:16:23 +0530 Subject: [PATCH 22/22] [skip ci] [skip ci] --- pg-identity-func-trig-seq.sql | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pg-identity-func-trig-seq.sql b/pg-identity-func-trig-seq.sql index e083b19..423ee1a 100644 --- a/pg-identity-func-trig-seq.sql +++ b/pg-identity-func-trig-seq.sql @@ -304,6 +304,8 @@ WITH 70100000 NO CYCLE; ADD COLUMN identify_handle_enabled BOOLEAN NOT NULL default true; SET search_path TO informixoltp; + +alter table payment_detail add column task_id numeric(10,0); CREATE OR REPLACE FUNCTION "informixoltp"."notify_trigger_informixoltp" () RETURNS trigger VOLATILE