db-migrate
Advanced tools
Comparing version 0.10.0-beta.18 to 0.10.0-beta.19
105
api.js
@@ -307,2 +307,32 @@ var assert = require('assert'); | ||
/** | ||
* Executes up a given number of migrations or a specific one. | ||
* | ||
* Defaults to up all migrations if no count is given. | ||
*/ | ||
sync: function(specification, opts, callback) { | ||
if (arguments.length > 0) { | ||
if (typeof(specification) === 'string') { | ||
this.internals.argv.destination = specification; | ||
} | ||
if (typeof(opts) === 'string') { | ||
this.internals.migrationMode = opts; | ||
this.internals.matching = opts; | ||
} | ||
else if (typeof(opts) === 'function') { | ||
callback = opts; | ||
} | ||
} | ||
return Promise.fromCallback(function(callback) { | ||
executeSync(this.internals, this.config, callback); | ||
}.bind(this)).asCallback(callback); | ||
}, | ||
/** | ||
* Executes down for all currently migrated migrations. | ||
@@ -524,3 +554,4 @@ */ | ||
.usage( | ||
'Usage: db-migrate [up|down|reset|create|db|seed|transition] [[dbname/]migrationName|all] [options]' | ||
'Usage: db-migrate [up|down|reset|sync|create|db|seed|transition] ' + | ||
'[[dbname/]migrationName|all] [options]' | ||
) | ||
@@ -563,3 +594,4 @@ | ||
.describe('sql-file', | ||
'Automatically create two sql files for up and down statements in /sqls and generate the javascript code that loads them.' | ||
'Automatically create two sql files for up and down statements in ' + | ||
'/sqls and generate the javascript code that loads them.' | ||
) | ||
@@ -571,3 +603,4 @@ .boolean('sql-file') | ||
.describe('ignore-on-init', | ||
'Create files that will run only if ignore-on-init in the env is set to false (currently works onlt with SQL)' | ||
'Create files that will run only if ignore-on-init in the env is set ' + | ||
'to false (currently works onlt with SQL)' | ||
).boolean('ignore-on-init') | ||
@@ -890,2 +923,38 @@ | ||
function executeSync(internals, config, callback) { | ||
migrationHook(internals) | ||
.then(function() { | ||
var Migrator = require('./lib/migrator.js'); | ||
var index = require('./connect'); | ||
if (!internals.argv.count) { | ||
internals.argv.count = Number.MAX_VALUE; | ||
} | ||
index.connect({ | ||
config: config.getCurrent().settings, | ||
internals: internals | ||
}, Migrator, function(err, migrator) { | ||
assert.ifError(err); | ||
if (internals.locTitle) | ||
migrator.migrationsDir = path.resolve(internals.argv['migrations-dir'], | ||
internals.locTitle); | ||
else | ||
migrator.migrationsDir = path.resolve(internals.argv['migrations-dir']); | ||
internals.migrationsDir = migrator.migrationsDir; | ||
migrator.driver.createMigrationsTable(function(err) { | ||
assert.ifError(err); | ||
log.verbose('migration table created'); | ||
migrator.sync(internals.argv, internals.onComplete.bind(this, | ||
migrator, internals, callback)); | ||
}); | ||
}); | ||
}); | ||
} | ||
function executeDown(internals, config, callback) { | ||
@@ -934,2 +1003,4 @@ | ||
index.driver(config.getCurrent().settings, function(err, db) { | ||
assert.ifError(err); | ||
if (internals.mode === 'create') { | ||
@@ -1102,2 +1173,20 @@ db.createDatabase(internals.argv.dbname, { | ||
break; | ||
case 'sync': | ||
if (internals.argv._.length === 0) { | ||
log.error('Missing sync destination!'); | ||
process.exit(1); | ||
} | ||
internals.argv.count = Number.MAX_VALUE; | ||
internals.argv.destination = internals.argv._.shift().toString(); | ||
if (folder[1]) { | ||
internals.matching = folder[1]; | ||
internals.migrationMode = folder[1]; | ||
} | ||
executeSync(internals, config); | ||
break; | ||
case 'up': | ||
@@ -1112,6 +1201,5 @@ case 'down': | ||
if (action === 'down') { | ||
log.info( | ||
'Ignoring migration name for down migrations. Use --count to control how many down migrations are run.' | ||
); | ||
internals.argv.destination = null; | ||
internals.argv.count = internals.argv.count || Number.MAX_VALUE; | ||
internals.argv.destination = internals.argv._.shift().toString(); | ||
} else { | ||
@@ -1175,3 +1263,4 @@ internals.argv.destination = internals.argv._.shift().toString(); | ||
log.error('Invalid Action: Must be [up|down|create|reset|seed|db].'); | ||
log.error('Invalid Action: Must be [up|down|create|reset|sync|seed|' + | ||
'db|transition].'); | ||
optimist.showHelp(); | ||
@@ -1178,0 +1267,0 @@ process.exit(1); |
@@ -122,6 +122,31 @@ var dbmUtil = require('db-migrate-shared').util; | ||
} else { | ||
this.downToBy(funcOrOpts.count, callback); | ||
this.downToBy(funcOrOpts.destination, funcOrOpts.count, callback); | ||
} | ||
}, | ||
sync: function(funcOrOpts, callback) { | ||
var self = this; | ||
Migration.loadFromDatabase(self.migrationsDir, self._driver, | ||
self.internals, function(err, completedMigrations) { | ||
if (err) { callback(err); return; } | ||
var mode = dbmUtil.syncMode( | ||
completedMigrations, | ||
funcOrOpts.destination | ||
); | ||
if(mode === 1) { | ||
log.info('Syncing upwards.'); | ||
self.up(funcOrOpts, callback); | ||
} | ||
else { | ||
log.info('Syncing downwards.'); | ||
self.down(funcOrOpts, callback); | ||
} | ||
}); | ||
}, | ||
upToBy: function(partialName, count, callback) { | ||
@@ -177,3 +202,3 @@ var self = this; | ||
downToBy: function(count, callback) { | ||
downToBy: function(partialName, count, callback) { | ||
var self = this; | ||
@@ -183,3 +208,3 @@ Migration.loadFromDatabase(self.migrationsDir, self._driver, self.internals, function(err, completedMigrations) { | ||
var toRun = dbmUtil.filterDown(completedMigrations, count); | ||
var toRun = dbmUtil.filterDown(completedMigrations, partialName, count); | ||
@@ -186,0 +211,0 @@ if (toRun.length === 0) { |
@@ -34,3 +34,3 @@ { | ||
], | ||
"version": "0.10.0-beta.18", | ||
"version": "0.10.0-beta.19", | ||
"engines": { | ||
@@ -50,3 +50,3 @@ "node": ">=0.6.0" | ||
"bluebird": "^3.1.1", | ||
"db-migrate-shared": "^1.0.2", | ||
"db-migrate-shared": "^1.1.2", | ||
"dotenv": "^2.0.0", | ||
@@ -66,18 +66,11 @@ "final-fs": "^1.6.0", | ||
"devDependencies": { | ||
"code": "^3.0.1", | ||
"db-meta": "~0.4.1", | ||
"code": "^4.0.0", | ||
"db-migrate-base": "^1.2.5", | ||
"db-migrate-mongodb": "^1.1.4", | ||
"db-migrate-mysql": "^1.1.7", | ||
"db-migrate-pg": "^0.1.10", | ||
"db-migrate-sqlite3": "^0.1.6", | ||
"lab": "^10.9.0", | ||
"mysql": "^2.10.2", | ||
"pg": "^6.1.0", | ||
"db-migrate-sqlite3": "^0.1.9", | ||
"lab": "^11.1.0", | ||
"proxyquire": "^1.4.0", | ||
"rimraf": "~2.5.0", | ||
"sinon": "^1.17.3", | ||
"sinon-as-promised": "^4.0.2", | ||
"sqlite3": "^3.1.1", | ||
"vows": "0.8.0" | ||
"sinon-as-promised": "^4.0.2" | ||
}, | ||
@@ -84,0 +77,0 @@ "scripts": { |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 2 instances in 1 package
9
35
1
111229
34
2948
Updateddb-migrate-shared@^1.1.2