Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save meetzaveri/e1b38f6f616f77a8ecea7ce74fd1738e to your computer and use it in GitHub Desktop.
Save meetzaveri/e1b38f6f616f77a8ecea7ce74fd1738e to your computer and use it in GitHub Desktop.

Code for deleting and creating records in bulk

const AWS = require('aws-sdk');
const Sequelize = require('sequelize');

AWS
  .config
  .update({accessKeyId: process.env.ACCESS_KEY, secretAccessKey: process.env.SECRET_KEY, region: process.env.REGION});

// const sequelize = new Sequelize(process.env.DATABASE_NAME,
// process.env.DATABASE_USERNAME, process.env.DATABASE_PASSWORD, {   host:
// process.env.DATABASE_HOST,   dialect: 'postgres',   operatorsAliases: false,
// pool: {     max: 5,     min: 0,     acquire: 30000,     idle: 10000   } });

let failureResponse = {
  statusCode: 500,
  headers: {
    "Content-Type": "application/json",
    "Access-Control-Allow-Origin": "*"
  },
  body: JSON.stringify({message: 'Something went wrong', dataFetched: false})
};

let successResponse = {
  statusCode: 200,
  headers: {
    "Content-Type": "application/json",
    "Access-Control-Allow-Origin": "*"
  },
  body: null
};

exports.handler = (event, context, callback) => {
  event.body = JSON.parse(event.body);
  console.log('event.body ', event.body)
  var body = {
    reportid: event.body.reportid,
    userid: event.body.userid,
    accountid: event.body.accountid
  }
  const sequelize = new Sequelize(process.env.DATABASE_NAME, process.env.DATABASE_USERNAME, process.env.DATABASE_PASSWORD, {
    host: process.env.DATABASE_HOST,
    port: 5432,
    logging: console.log,
    maxConcurrentQueries: 100,
    dialect: 'postgres',
    dialectOptions: {
      ssl: 'Amazon RDS'
    },
    pool: {
      maxConnections: 5,
      maxIdleTime: 30
    },
    language: 'en'
  });

  const Userreport = sequelize.define('userreport', {
    userid: {
      type: Sequelize.STRING
    },
    accountid: {
      type: Sequelize.INTEGER
    },
    reportid: {
      type: Sequelize.STRING
    }
  }, {
    tableName: 'user_report',
    timestamps: false
  });
  Userreport.removeAttribute('id');
  try {
    Userreport
      .destroy({
      where: {
        reportid: body.reportid,
        accountid: body.accountid
      }
    })
      .then(data => {
        console.log('After DELETE operation', data);

        let userIdArr = body.userid;
        let bulkJsonObj = userIdArr.map((item, index) => {
          let jsonObj = {
            reportid: body.reportid,
            userid: item,
            accountid: body.accountid
          };
          return jsonObj;
        })

        console.log('bulkJsonObj', bulkJsonObj)
        Userreport
          .bulkCreate(bulkJsonObj)
          .then((users) => {
            console.log('Users', users)
            successResponse.body = {
              data: users,
              dataUpdated: true,
              message: 'User Reports are updated successfully.'
            };
            successResponse.body = JSON.stringify(successResponse.body);
            sequelize.close();
            return callback(null, successResponse);
          })
          .catch(error => {
            console.log('error in creating bulk user_report mappings', error);
            sequelize.close();
            failureResponse.body = JSON.stringify(failureResponse.body);
            return callback(null, failureResponse);
          });
      })
      .catch(error => {
        console.log('error', error);
        sequelize.close();
        failureResponse.body = JSON.stringify(failureResponse.body);
        return callback(null, failureResponse);
      });
  } catch (error) {
    console.log('error', error);
    sequelize.close();
    failureResponse.body = JSON.stringify(failureResponse.body);
  }
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment