├── .gitignore
├── .idea
├── .name
├── codeStyleSettings.xml
├── compiler.xml
├── copyright
│ └── profiles_settings.xml
├── encodings.xml
├── inspectionProfiles
│ ├── Project_Default.xml
│ └── profiles_settings.xml
├── jsLibraryMappings.xml
├── libraries
│ └── sails_db_migrate_node_modules.xml
├── misc.xml
├── modules.xml
├── scopes
│ └── scope_settings.xml
└── vcs.xml
├── .npmignore
├── CHANGES.md
├── LICENSE.txt
├── README.md
├── index.js
├── lib
├── db-migrate-wrapper.js
├── gruntTasks.js
└── sailsDbMigrate.js
├── package.json
└── sails-db-migrate.iml
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .idea/workspace.xml
3 | atlassian-ide-plugin.xml
4 | npm-debug.log
5 |
--------------------------------------------------------------------------------
/.idea/.name:
--------------------------------------------------------------------------------
1 | sails-db-migrate
--------------------------------------------------------------------------------
/.idea/codeStyleSettings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/.idea/copyright/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/inspectionProfiles/Project_Default.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/.idea/inspectionProfiles/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/.idea/jsLibraryMappings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/libraries/sails_db_migrate_node_modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | 1.7
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/scopes/scope_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | .idea
2 | **/*.md
3 | sails-db-migrate.iml
4 |
--------------------------------------------------------------------------------
/CHANGES.md:
--------------------------------------------------------------------------------
1 | # sails-db-migrate changelog
2 |
3 | ## v1.5.0 (2016-12-05)
4 |
5 | * #23 - Added MongoDB support (Thanks [AngelMunoz](https://github.com/AngelMunoz))
6 |
7 | ## v1.4.0 (2016-06-28)
8 |
9 | * Added wishlist to README
10 | * PR#29, #28 - Adding support for `multipleStatements` in connection settings.
11 |
12 | ## v1.3.2 (2016-06-09)
13 |
14 | * PR#26 - Changed `sails.lift` to `sails.load` to avoid invalid port errors
15 | with newer versions of Sails.
16 |
17 | ## v1.3.1 (2016-02-16)
18 |
19 | * Fixed changelog
20 |
21 | ## v1.3.0 (2016-02-16)
22 |
23 | * Improved error handling when `./config/migrations.js` is missing
24 | * #21 - Added badges
25 | * Removed unused dev dependency
26 |
27 | ## v1.2.0 (2015-11-19)
28 |
29 | * #19 - Updated peer dependencies
30 | * sails to 0.12.x (including rc3 or better)
31 | * db-migrate to 0.10.x (including beta.4 or better)
32 |
33 | ## v1.1.0 (2015-07-27)
34 |
35 | * Add `LOG_LEVEL` environment variable to increase Sails debug logging.
36 |
37 | ## v1.0.0 (2015-07-23)
38 |
39 | * Set version to 1.0.0, because semver.
40 | * PR#17 - Added `--table` option. And added `coffeeFile`, `migrationsDir` and
41 | `table` config options.
42 |
43 | ## v0.8.0 (2015-07-08)
44 |
45 | * PR#15 - Expose `sql-file` and `coffee-file` options
46 |
47 | ## v0.7.0 (2015-05-27)
48 |
49 | * PR#14 - Add `--migrations-dir` option
50 |
51 | ## v0.6.1 (2015-02-20)
52 |
53 | * Added this changelog.
54 | * #13 - Updated peer dependencies
55 | * db-migrate 0.7.0 to 0.9.x
56 | * sails 0.10.4 to 0.11.x
57 |
58 | ## v0.6.0 (2014-12-05)
59 |
60 | * PR#11 - Add SSL support for PostgreSQL.
61 | * PR#12 - Update db-migrate to 0.8.0.
62 |
63 | ## v0.5.0
64 |
65 | * PR#9 - Add support for a url filed in the connection config.
66 |
67 | ## v0.4.0
68 |
69 | * PR#7 - Pass 'migrating: true' to the sails config, so sails bootstrap code
70 | can know that we're not _really_ trying to lift sails.
71 |
72 | ## v0.3.1
73 |
74 | * PR#6 - Disable passing debug into the child process. This fixes
75 | issues running an app under a debugger.
76 |
77 | ## v0.3.0
78 |
79 | * PR#3 - Ass support for env option.
80 |
81 | ## v0.2.2
82 |
83 | * Fix issue running migrations on Windows.
84 |
85 | ## v0.2.1
86 |
87 | * Fix issue with special characters in passwords.
88 |
89 | ## v0.2.0
90 |
91 | * Extract `sailsDbMigrate()` function, to allow migrations to be run
92 | outside of grunt.
93 |
94 | ## v0.1.0
95 |
96 | * Initial release.
97 |
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014 David M. Lee, II
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # sails-db-migrate
2 | [](https://david-dm.org/building5/sails-db-migrate#info=devDependencies)
3 | [](https://david-dm.org/building5/sails-db-migrate#info=peerDependencies)
4 |
5 | [db-migrate][] integration for [Sails.js][]. This is a fairly simple wrapper,
6 | which provides [grunt][] tasks for running and creating migrations. It also
7 | extracts the database configuration from the Sails config, so you don't have to
8 | duplicate you config in a `database.json` file.
9 |
10 | Supports Sails 0.10.x.
11 |
12 | ## Setup
13 |
14 | Installation is very typical.
15 |
16 | ```bash
17 | $ npm install --save sails-db-migrate
18 | ```
19 |
20 | You may also have to explicitly install your database driver. Normallys it's
21 | installed under `sails-{postgresql,mysql}`, but that won't be found outside of
22 | that package.
23 |
24 | ```bash
25 | $ npm install --save pg # or mysql
26 | ```
27 |
28 | You need to setup `config/migrations.js` to name the connection which you will
29 | use to run migrations.
30 |
31 | ```JavaScript
32 | // config/migrations.js
33 | module.exports.migrations = {
34 | // connection name matches a field from config/connections.js
35 | connection: 'somePostgresqlServer' // or MySQL
36 | };
37 | ```
38 |
39 | Optionally, you can specify in the config file the name of the database table to
40 | be used to track migrations (defaults to `migrations`), the directory to use for
41 | migrations (defaults to `migrations`), and whether to create a coffeescript
42 | file for the migrations instead of javascript file (defaults to `false`).
43 |
44 | ```JavaScript
45 | // config/migrations.js
46 | module.exports.migrations = {
47 | // connection name matches a field from config/connections.js
48 | connection: 'somePostgresqlServer', // or MySQL
49 | table: 'sails_migrations',
50 | migrationsDir: 'sails_migrations',
51 | coffeeFile: true
52 | };
53 | ```
54 |
55 | You'll also need to setup `tasks/register/dbMigrate.js` to add the `db:migrate`
56 | tasks to grunt.
57 |
58 | ```JavaScript
59 | // tasks/register/dbMigrate.js
60 | module.exports = require('sails-db-migrate').gruntTasks;
61 | ```
62 |
63 | ## Usage
64 |
65 | ### Help
66 |
67 | Help can be found by running `grunt db:migrate`.
68 |
69 | ```bash
70 | $ grunt db:migrate
71 | ```
72 |
73 | ### Creating migrations
74 |
75 | You create migrations using the `grunt db:migrate:create`
76 |
77 | ```bash
78 | $ grunt db:migrate:create --name add-some-fooz
79 |
80 | + db-migrate create add-some-fooz
81 | [INFO] Created migration at /Users/dlee/prj/test/migrations/20140829025723-add-some-fooz.js
82 |
83 | Done, without errors.
84 | ```
85 |
86 | You can edit your new migration file. This is fully documented in the
87 | [db-migrate docs][].
88 |
89 | ### Running migrations
90 |
91 | Migrations can be run up or down. To run only a certain number of migrations,
92 | specify the `--count` flag.`
93 |
94 | ```bash
95 | $ grunt db:migrate:up
96 | Running "db:migrate:up" (db:migrate) task
97 | + db-migrate up
98 | [INFO] Processed migration 20140829025723-add-some-fooz
99 | [INFO] Done
100 |
101 | Done, without errors.
102 |
103 | $ grunt db:migrate:down --count 2
104 | Running "db:migrate:down" (db:migrate) task
105 | + db-migrate down --count 2
106 | [INFO] Processed migration 20140829025723-add-some-fooz
107 | [INFO] Processed migration 20140829025008-init
108 | [INFO] Done
109 |
110 | Done, without errors.
111 | ```
112 |
113 | To specify your own migrations directory, use `--migrations-dir`.
114 |
115 | ```bash
116 | $ grunt db:migrate:up --migrations-dir=migrations-special
117 | ```
118 |
119 | ### Debugging
120 |
121 | Normally, migrations load Sails with a log level of `silent`, since you usually
122 | don't need it. Sometimes, however, Sails will fail to load, and some debug
123 | output would be nice.
124 |
125 | You can set the `LOG_LEVEL` environment variable to turn up sails logging for
126 | the migrations
127 |
128 | ```bash
129 | $ LOG_LEVEL=debug grunt db:migrate:up
130 | ```
131 |
132 | ### Patches Welcome
133 |
134 | If you'd like to contribute to sails-db-migrate, start by looking at some of the
135 | [open issues][] in the issue tracker.
136 |
137 | [db-migrate]: https://github.com/kunklejr/node-db-migrate
138 | [sails.js]: http://sailsjs.org/
139 | [grunt]: http://gruntjs.com/
140 | [db-migrate docs]: https://github.com/kunklejr/node-db-migrate#migrations-api
141 | [open issues]: https://github.com/building5/sails-db-migrate/issues
142 |
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | module.exports = {
4 | gruntTasks: require('./lib/gruntTasks'),
5 | sailsDbMigrate: require('./lib/sailsDbMigrate')
6 | };
7 |
--------------------------------------------------------------------------------
/lib/db-migrate-wrapper.js:
--------------------------------------------------------------------------------
1 | /**
2 | * db-migrate doesn't provide a programmatic interface. Or at least there's a lot of work in the
3 | * bin script I don't want to duplicate. But there's not a great way to search the path for it
4 | * so I can spawn it directly.
5 | *
6 | * Instead, I have this wrapper that I can easily spawn, which simply runs the db-migrate CLI.
7 | */
8 |
9 | require('db-migrate/bin/db-migrate');
10 |
--------------------------------------------------------------------------------
/lib/gruntTasks.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var Sails = require('sails').Sails;
4 | var sailsDbMigrate = require('./sailsDbMigrate');
5 |
6 | /**
7 | * Builds the command line arguments to pass to db-migrate.
8 | *
9 | * @param grunt Grunt object.
10 | * @param command The db-migrate command to run.
11 | * @returns Arguments array for the db-migrate command.
12 | */
13 | function buildDbMigrateArgs(grunt, config, command) {
14 | var args = [];
15 | var name = grunt.option('name');
16 |
17 | args.push(command);
18 |
19 | if (command === 'create') {
20 | if (!name) {
21 | throw new Error('--name required to create migration');
22 | }
23 | args.push(name);
24 | }
25 |
26 | if (grunt.option('count') !== undefined) {
27 | args.push('--count');
28 | args.push(grunt.option('count'));
29 | }
30 |
31 | if (grunt.option('dry-run')) {
32 | args.push('--dry-run');
33 | }
34 |
35 | if (grunt.option('db-verbose')) {
36 | args.push('--verbose');
37 | }
38 |
39 | if (grunt.option('sql-file')) {
40 | args.push('--sql-file');
41 | }
42 |
43 | if (grunt.option('coffee-file')) {
44 | args.push('--coffee-file');
45 | } else if (config.coffeeFile) {
46 | args.push('--coffee-file');
47 | }
48 |
49 | if (grunt.option('migrations-dir')) {
50 | args.push('--migrations-dir');
51 | args.push(grunt.option('migrations-dir'));
52 | } else if (config.migrationsDir) {
53 | args.push('--migrations-dir');
54 | args.push(config.migrationsDir);
55 | }
56 |
57 | if (grunt.option('table')) {
58 | args.push('--table');
59 | args.push(grunt.option('table'));
60 | } else if (config.table) {
61 | args.push('--table');
62 | args.push(config.table);
63 | }
64 |
65 | return args;
66 | }
67 |
68 | /**
69 | * Display command usage information.
70 | *
71 | * @param grunt Grunt object.
72 | */
73 | function usage(grunt) {
74 | grunt.log.writeln('usage: grunt db:migrate[:up|:down|:create] [options]');
75 | grunt.log.writeln(' See ./migrations/README.md for more details');
76 | grunt.log.writeln();
77 | grunt.log.writeln('db:migrate:create Options:');
78 | grunt.log.writeln(' --name=NAME Name of the migration to create');
79 | grunt.log.writeln();
80 | grunt.log.writeln('db:migrate[:up|:down] Options:');
81 | grunt.log.writeln(' --count=N Max number of migrations to run.');
82 | grunt.log.writeln(' --dry-run Prints the SQL but doesn\'t run it.');
83 | grunt.log.writeln(' --db-verbose Verbose mode.');
84 | grunt.log.writeln(' --sql-file Create sql files for up and down.');
85 | grunt.log.writeln(' --coffee-file Create a coffeescript migration file.');
86 | grunt.log.writeln(' --migrations-dir The directory to use for migration files.');
87 | grunt.log.writeln(' Defaults to "migrations".');
88 | grunt.log.writeln(' --table Specify the table to track migrations in.');
89 | grunt.log.writeln(' Defaults to "migrations".');
90 | }
91 |
92 | /**
93 | * Grunt registration function.
94 | *
95 | * @param grunt Grunt object.
96 | */
97 | module.exports = function (grunt) {
98 | grunt.registerTask('db:migrate', 'Run the database migrations', function (command) {
99 | var done = this.async();
100 | var name = grunt.option('name');
101 | var sails;
102 | var sailsConfig;
103 | var env;
104 |
105 | if (!command) {
106 | usage(grunt);
107 | return done();
108 | }
109 |
110 | if (grunt.option('env')){
111 | env = grunt.option('env');
112 | }else{
113 | env = process.env.NODE_ENV;
114 | }
115 |
116 | sailsConfig = {
117 | port: -1,
118 | log: { level: process.env.LOG_LEVEL || 'silent' },
119 | environment: env,
120 | migrating: true
121 | };
122 |
123 | // load Sails to get the effective configuration. We don't actually need to
124 | // run it, and we certainly don't want any log messages. We just want the
125 | // config.
126 | sails = new Sails();
127 | sails.load(sailsConfig, function (err) {
128 | var url;
129 | var args;
130 |
131 | if (err) {
132 | grunt.fail.fatal('Could not load sails', err);
133 | return done(err);
134 | }
135 |
136 | if (!sails.config.migrations) {
137 | grunt.fail.fatal('Migrations not configured. Please setup ./config/migrations.js');
138 | return done();
139 | }
140 |
141 | try {
142 | args = buildDbMigrateArgs(grunt, sails.config.migrations, command);
143 | grunt.log.writeln('+ db-migrate', args.join(' '));
144 | url = sailsDbMigrate(args, sails, done);
145 | grunt.log.writeln('DATABASE_URL=' + url);
146 | } catch (err) {
147 | grunt.fail.fatal(err);
148 | done(err);
149 | }
150 | });
151 | });
152 | };
153 |
--------------------------------------------------------------------------------
/lib/sailsDbMigrate.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var util = require('util');
4 | var fork = require('child_process').fork;
5 | var path = require('path');
6 |
7 | /**
8 | * Build a URL from the Sails connection config.
9 | *
10 | * @param {object} connection Sails connection config.
11 | * @returns {string} URL for connecting to the specified database.
12 | * @throws Error if adapter is not supported.
13 | */
14 | function buildURL(connection) {
15 | var scheme;
16 | var url;
17 |
18 | switch (connection.adapter) {
19 | case 'sails-mysql':
20 | scheme = 'mysql';
21 | break;
22 | case 'sails-postgresql':
23 | scheme = 'postgres';
24 | break;
25 | case 'sails-mongo':
26 | scheme = 'mongodb'
27 | break;
28 | default:
29 | throw new Error('migrations not supported for ' + connection.adapter);
30 | }
31 |
32 | // return the connection url if one is configured
33 | if (connection.url) {
34 | return connection.url;
35 | }
36 |
37 | url = scheme + '://';
38 | if (connection.user) {
39 | url += connection.user;
40 | if (connection.password) {
41 | url += ':' + encodeURIComponent(connection.password)
42 | }
43 | url += '@';
44 | }
45 | url += connection.host || 'localhost';
46 | if (connection.port) {
47 | url += ':' + connection.port;
48 | }
49 | if (connection.database) {
50 | url += '/' + encodeURIComponent(connection.database);
51 | }
52 |
53 | var params = [];
54 | if (connection.multipleStatements) {
55 | params.push('multipleStatements=true');
56 | }
57 |
58 | if (params.length > 0) {
59 | url += '?' + params.join('&');
60 | }
61 |
62 | return url;
63 | }
64 |
65 | /**
66 | * Parse out the database URL from the sails config.
67 | *
68 | * @param sailsConfig Sails config object.
69 | * @returns {object} .url and .cleanURL for the database connection.
70 | * @throws Error if adapter is not supported.
71 | */
72 | function parseSailsConfig(sailsConfig) {
73 | var res = {};
74 | var connection;
75 |
76 | if (!sailsConfig.migrations) {
77 | throw new Error('Migrations not configured. Please setup ./config/migrations.js');
78 | }
79 |
80 | var connectionName = sailsConfig.migrations.connection;
81 | if (!connectionName) {
82 | throw new Error('connection missing from ./config/migrations.js');
83 | }
84 |
85 | connection = sailsConfig.connections[connectionName];
86 |
87 | if (!connection) {
88 | throw new Error('could not find connection ' + connectionName + ' in ./config/connections.js');
89 | }
90 |
91 | // build the db url, which contains the password
92 | res.url = buildURL(connection);
93 | // check for ssl option in connection config
94 | if (connection.ssl) {
95 | res.adapter = connection.adapter;
96 | res.ssl = true;
97 | }
98 | // now build a clean one for logging, without the password
99 | if (connection.password != null) {
100 | connection.password = '****';
101 | }
102 | res.cleanURL = buildURL(connection);
103 |
104 | return res;
105 | }
106 |
107 | /**
108 | * Run the database migrations on the given sails object.
109 | *
110 | * @param args Command line arguments to pass to db:migrate
111 | * @param [sails] Sails object to migrate. Defaults to the global sails object.
112 | * @param done Completion callback.
113 | * @return The URL for the database to be migrated.
114 | */
115 | module.exports = function (args, sails, done) {
116 | var dbMigrate = path.join(__dirname, 'db-migrate-wrapper.js');
117 | var parsed, child;
118 |
119 | if (!done && typeof (sails) === 'function') {
120 | done = sails;
121 | sails = global.sails;
122 | }
123 |
124 | parsed = parseSailsConfig(sails.config);
125 |
126 | // export DATABASE_URL for db-migrate
127 | process.env.DATABASE_URL = parsed.url;
128 | // export PGSSLMODE for db-migrate if ssl=true
129 | if (parsed.ssl) {
130 | // set the appropriate environment variable for postgres databases
131 | if (parsed.adapter === 'sails-postgresql') {
132 | process.env.PGSSLMODE = 'require';
133 | }
134 | }
135 | // run db-migrate
136 | // the empty execArgv option explicitly disables debugging options from being passed to the child,
137 | // which was causing problems when trying to interactively debug an application that calls sails-db-migrate.
138 | child = fork(dbMigrate, args, { execArgv: [] });
139 | child.on('exit', function (code) {
140 | if (code !== 0) {
141 | return done(new Error('Migrations failed'));
142 | }
143 | done();
144 | });
145 |
146 | return parsed.cleanURL;
147 | };
148 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "sails-db-migrate",
3 | "version": "1.5.0",
4 | "description": "db-migrate integration for sails.js",
5 | "main": "index.js",
6 | "repository": {
7 | "type": "git",
8 | "url": "https://github.com/building5/sails-db-migrate.git"
9 | },
10 | "keywords": [
11 | "sails",
12 | "database",
13 | "migrations"
14 | ],
15 | "author": "David M. Lee, II",
16 | "licenses": "MIT",
17 | "bugs": {
18 | "url": "https://github.com/building5/sails-db-migrate/issues"
19 | },
20 | "homepage": "https://github.com/building5/sails-db-migrate",
21 | "dependencies": {},
22 | "devDependencies": {},
23 | "peerDependencies": {
24 | "db-migrate": ">0.7.0 <0.11 || >=0.10.0-beta.4 <0.11",
25 | "sails": ">0.10.4 <0.13 || >=0.12.0-rc3 <0.13"
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/sails-db-migrate.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------