Skip to content

Commit d53369d

Browse files
authored
Merge pull request #537 from db-migrate/rewriteLoader
Rewrite loader
2 parents 72efddc + 61ca5bb commit d53369d

23 files changed

+858
-1371
lines changed

api.js

+17-11
Original file line numberDiff line numberDiff line change
@@ -73,14 +73,20 @@ function dbmigrate (plugins, isModule, options, callback) {
7373
// delayed loading of bluebird
7474
Promise = require('bluebird');
7575
this.internals.migrationOptions = {
76-
dbmigrate: this.internals.dbm,
76+
dbmigrate: {
77+
version: this.internals.dbm.version,
78+
dataType: this.internals.dbm.dataType
79+
},
80+
dryRun: this.internals.dryRun,
81+
cwd: this.internals.cwd,
82+
noTransactions: this.internals.notransactions,
83+
verbose: this.internals.verbose,
84+
type: this.internals.dbm.dataType,
85+
log: log,
7786
ignoreOnInit: this.internals.argv['ignore-on-init'],
7887
Promise: Promise
7988
};
80-
this.internals.seederOptions = {
81-
dbmigrate: this.internals.dbm,
82-
Promise: Promise
83-
};
89+
this.internals.safeOptions = this.internals.migrationOptions;
8490
}
8591

8692
dbmigrate.prototype = {
@@ -101,10 +107,10 @@ dbmigrate.prototype = {
101107
},
102108

103109
/**
104-
* Registers and initializes hooks.
105-
*
106-
* @returns Promise
107-
*/
110+
* Registers and initializes hooks.
111+
*
112+
* @returns Promise
113+
*/
108114
registerAPIHook: function (callback) {
109115
var plugins = this.internals.plugins;
110116
var self = this;
@@ -309,8 +315,8 @@ dbmigrate.prototype = {
309315
},
310316

311317
/**
312-
* Transition migrations to the latest defined protocol.
313-
*/
318+
* Transition migrations to the latest defined protocol.
319+
*/
314320
transition: function () {
315321
load('transition')(this.internals);
316322
},

connect.js

+27-26
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
/**
2+
* This file is going to disappear.
3+
* Only still here for backwards compatibility.
4+
* */
15
var recursive = require('final-fs').readdirRecursive;
26
var fs = require('fs');
37
var driver = require('./lib/driver');
@@ -6,8 +10,9 @@ var log = require('db-migrate-shared').log;
610

711
exports.connect = function (config, PassedClass, callback) {
812
var internals = {};
9-
13+
var prefix = 'migration';
1014
if (config.config) {
15+
prefix = config.prefix || prefix;
1116
internals = config.internals;
1217
config = config.config;
1318
}
@@ -19,15 +24,16 @@ exports.connect = function (config, PassedClass, callback) {
1924
}
2025

2126
if (internals.migrationMode) {
22-
var dirPath = path.resolve(config['migrations-dir'] || 'migrations');
23-
27+
var dirPath = path.resolve(
28+
internals.argv['migrations-dir'] || 'migrations'
29+
);
2430
if (internals.migrationMode !== 'all') {
2531
var switched = false;
2632
var newConf;
2733

2834
try {
2935
newConf = require(path.resolve(
30-
config['migrations-dir'] || 'migrations',
36+
internals.argv['migrations-dir'] || 'migrations',
3137
internals.migrationMode
3238
) + '/config.json');
3339
log.info(
@@ -48,9 +54,10 @@ exports.connect = function (config, PassedClass, callback) {
4854
null,
4955
new PassedClass(
5056
db,
51-
config['migrations-dir'],
57+
internals.argv['migrations-dir'],
5258
internals.mode !== 'static',
53-
internals
59+
internals,
60+
prefix
5461
)
5562
);
5663
});
@@ -60,17 +67,18 @@ exports.connect = function (config, PassedClass, callback) {
6067
null,
6168
new PassedClass(
6269
db,
63-
config['migrations-dir'],
70+
internals.argv['migrations-dir'],
6471
internals.mode !== 'static',
65-
internals
72+
internals,
73+
prefix
6674
)
6775
);
6876
}
6977
} else {
7078
recursive(
7179
dirPath,
7280
false,
73-
config['migrations-dir'] || 'migrations'
81+
internals.argv['migrations-dir'] || 'migrations'
7482
).then(function (files) {
7583
var oldClose = db.close;
7684

@@ -89,6 +97,7 @@ exports.connect = function (config, PassedClass, callback) {
8997
PassedClass,
9098
db,
9199
oldClose,
100+
prefix,
92101
cb
93102
);
94103
};
@@ -101,9 +110,10 @@ exports.connect = function (config, PassedClass, callback) {
101110
null,
102111
new PassedClass(
103112
db,
104-
config['migrations-dir'],
113+
internals.argv['migrations-dir'],
105114
internals.mode !== 'static',
106-
internals
115+
internals,
116+
prefix
107117
)
108118
);
109119
}
@@ -128,6 +138,7 @@ function migrationFiles (
128138
PassedClass,
129139
db,
130140
close,
141+
prefix,
131142
cb
132143
) {
133144
var file;
@@ -156,8 +167,8 @@ function migrationFiles (
156167

157168
db.switchDatabase(switched ? newConf : config.database, function () {
158169
internals.matching = file.substr(
159-
file.indexOf(config['migrations-dir'] || 'migrations') +
160-
(config['migrations-dir'] || 'migrations').length +
170+
file.indexOf(internals.argv['migrations-dir'] || 'migrations') +
171+
(internals.argv['migrations-dir'] || 'migrations').length +
161172
1
162173
);
163174

@@ -170,9 +181,10 @@ function migrationFiles (
170181
null,
171182
new PassedClass(
172183
db,
173-
config['migrations-dir'],
184+
internals.argv['migrations-dir'],
174185
internals.mode !== 'static',
175-
internals
186+
internals,
187+
prefix
176188
)
177189
);
178190

@@ -181,14 +193,3 @@ function migrationFiles (
181193
}
182194
});
183195
}
184-
185-
exports.createMigration = function (migration, callback) {
186-
migration.write(function (err) {
187-
if (err) {
188-
callback(err);
189-
return;
190-
}
191-
192-
callback(null, migration);
193-
});
194-
};

lib/commands/check.js

+29-17
Original file line numberDiff line numberDiff line change
@@ -4,34 +4,46 @@ var assert = require('./helper/assert.js');
44
var migrationHook = require('./helper/migration-hook.js');
55

66
module.exports = function (internals, config, callback) {
7-
migrationHook(internals)
8-
.then(function () {
9-
var Migrator = require('../migrator.js');
10-
var index = require('../../connect');
7+
migrationHook(internals).then(function () {
8+
var Migrator = require('../walker.js');
9+
var index = require('../../connect');
1110

12-
if (!internals.argv.count) {
13-
internals.argv.count = Number.MAX_VALUE;
14-
}
15-
index.connect({
11+
if (!internals.argv.count) {
12+
internals.argv.count = Number.MAX_VALUE;
13+
}
14+
index.connect(
15+
{
1616
config: config.getCurrent().settings,
17-
internals: internals
18-
}, Migrator, function (err, migrator) {
17+
internals: internals,
18+
prefix: 'migration'
19+
},
20+
Migrator,
21+
function (err, migrator) {
1922
if (!assert(err, callback)) return;
2023

2124
if (internals.locTitle) {
22-
migrator.migrationsDir = path.resolve(internals.argv['migrations-dir'],
23-
internals.locTitle);
24-
} else { migrator.migrationsDir = path.resolve(internals.argv['migrations-dir']); }
25+
migrator.migrationsDir = path.resolve(
26+
internals.argv['migrations-dir'],
27+
internals.locTitle
28+
);
29+
} else {
30+
migrator.migrationsDir = path.resolve(
31+
internals.argv['migrations-dir']
32+
);
33+
}
2534

2635
internals.migrationsDir = migrator.migrationsDir;
2736

2837
migrator.driver.createMigrationsTable(function (err) {
2938
if (!assert(err, callback)) return;
3039
log.verbose('migration table created');
3140

32-
migrator.check(internals.argv, internals.onComplete.bind(this,
33-
migrator, internals, callback));
41+
migrator.check(
42+
internals.argv,
43+
internals.onComplete.bind(this, migrator, internals, callback)
44+
);
3445
});
35-
});
36-
});
46+
}
47+
);
48+
});
3749
};

0 commit comments

Comments
 (0)