sequelize-mig
Version:
Sequelize migration generator and es6 init tool
46 lines (38 loc) • 1.16 kB
JavaScript
const Sequelize = require('sequelize');
/**
* Actions summary:
*
* '<%actions%>'
*
*/
const info = '<%info%>';
const migrationCommands = (transaction) => ['<%commandsUp%>'];
const rollbackCommands = (transaction) => ['<%commandsDown%>'];
const pos = 0;
const useTransaction = true;
const execute = (queryInterface, sequelize, _commands) => {
let index = pos;
const run = (transaction) => {
const commands = _commands(transaction);
return new Promise((resolve, reject) => {
const next = () => {
if (index < commands.length) {
const command = commands[index];
console.log(`[#${index}] execute: ${command.fn}`);
index++;
queryInterface[command.fn](...command.params).then(next, reject);
} else resolve();
};
next();
});
};
if (useTransaction) return queryInterface.sequelize.transaction(run);
return run(null);
};
module.exports = {
pos,
useTransaction,
up: (queryInterface, sequelize) => execute(queryInterface, sequelize, migrationCommands),
down: (queryInterface, sequelize) => execute(queryInterface, sequelize, rollbackCommands),
info,
};