knex 3.2.3 → 3.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2447 -2441
- package/CONTRIBUTING.md +190 -190
- package/LICENSE +22 -22
- package/README.md +156 -156
- package/UPGRADING.md +245 -245
- package/bin/cli.js +516 -516
- package/bin/knexfile-runtime-error.js +27 -27
- package/bin/utils/cli-config-utils.js +217 -217
- package/bin/utils/constants.js +7 -7
- package/bin/utils/migrationsLister.js +37 -37
- package/knex.js +23 -23
- package/knex.mjs +11 -11
- package/lib/builder-interface-augmenter.js +120 -120
- package/lib/client.js +585 -585
- package/lib/constants.js +61 -61
- package/lib/dialects/better-sqlite3/index.js +101 -101
- package/lib/dialects/cockroachdb/crdb-columncompiler.js +14 -14
- package/lib/dialects/cockroachdb/crdb-querybuilder.js +11 -11
- package/lib/dialects/cockroachdb/crdb-querycompiler.js +122 -122
- package/lib/dialects/cockroachdb/crdb-tablecompiler.js +46 -46
- package/lib/dialects/cockroachdb/crdb-viewcompiler.js +15 -15
- package/lib/dialects/cockroachdb/index.js +86 -86
- package/lib/dialects/index.js +34 -34
- package/lib/dialects/mssql/index.js +498 -498
- package/lib/dialects/mssql/mssql-formatter.js +34 -34
- package/lib/dialects/mssql/query/mssql-querycompiler.js +601 -601
- package/lib/dialects/mssql/schema/mssql-columncompiler.js +185 -185
- package/lib/dialects/mssql/schema/mssql-compiler.js +91 -91
- package/lib/dialects/mssql/schema/mssql-tablecompiler.js +393 -393
- package/lib/dialects/mssql/schema/mssql-viewcompiler.js +55 -55
- package/lib/dialects/mssql/transaction.js +176 -176
- package/lib/dialects/mysql/index.js +317 -317
- package/lib/dialects/mysql/query/mysql-querybuilder.js +14 -14
- package/lib/dialects/mysql/query/mysql-querycompiler.js +292 -292
- package/lib/dialects/mysql/schema/mysql-columncompiler.js +193 -193
- package/lib/dialects/mysql/schema/mysql-compiler.js +60 -60
- package/lib/dialects/mysql/schema/mysql-tablecompiler.js +426 -426
- package/lib/dialects/mysql/schema/mysql-viewbuilder.js +21 -21
- package/lib/dialects/mysql/schema/mysql-viewcompiler.js +15 -15
- package/lib/dialects/mysql/transaction.js +46 -46
- package/lib/dialects/mysql2/index.js +53 -53
- package/lib/dialects/mysql2/transaction.js +44 -44
- package/lib/dialects/oracle/DEAD_CODE.md +5 -5
- package/lib/dialects/oracle/index.js +92 -92
- package/lib/dialects/oracle/query/oracle-querycompiler.js +343 -343
- package/lib/dialects/oracle/schema/internal/incrementUtils.js +22 -22
- package/lib/dialects/oracle/schema/internal/trigger.js +155 -155
- package/lib/dialects/oracle/schema/oracle-columnbuilder.js +17 -17
- package/lib/dialects/oracle/schema/oracle-columncompiler.js +126 -126
- package/lib/dialects/oracle/schema/oracle-compiler.js +124 -124
- package/lib/dialects/oracle/schema/oracle-tablecompiler.js +210 -210
- package/lib/dialects/oracle/utils.js +107 -107
- package/lib/dialects/oracledb/index.js +381 -381
- package/lib/dialects/oracledb/query/oracledb-querycompiler.js +481 -481
- package/lib/dialects/oracledb/schema/oracledb-columncompiler.js +61 -61
- package/lib/dialects/oracledb/schema/oracledb-tablecompiler.js +19 -19
- package/lib/dialects/oracledb/schema/oracledb-viewbuilder.js +13 -13
- package/lib/dialects/oracledb/schema/oracledb-viewcompiler.js +19 -19
- package/lib/dialects/oracledb/transaction.js +98 -98
- package/lib/dialects/oracledb/utils.js +208 -208
- package/lib/dialects/pgnative/index.js +60 -60
- package/lib/dialects/postgres/execution/pg-transaction.js +19 -19
- package/lib/dialects/postgres/index.js +373 -373
- package/lib/dialects/postgres/query/pg-querybuilder.js +43 -43
- package/lib/dialects/postgres/query/pg-querycompiler.js +400 -400
- package/lib/dialects/postgres/schema/pg-columncompiler.js +162 -162
- package/lib/dialects/postgres/schema/pg-compiler.js +138 -138
- package/lib/dialects/postgres/schema/pg-tablecompiler.js +331 -331
- package/lib/dialects/postgres/schema/pg-viewbuilder.js +21 -21
- package/lib/dialects/postgres/schema/pg-viewcompiler.js +35 -35
- package/lib/dialects/redshift/index.js +86 -86
- package/lib/dialects/redshift/query/redshift-querycompiler.js +163 -163
- package/lib/dialects/redshift/schema/redshift-columnbuilder.js +22 -22
- package/lib/dialects/redshift/schema/redshift-columncompiler.js +67 -67
- package/lib/dialects/redshift/schema/redshift-compiler.js +14 -14
- package/lib/dialects/redshift/schema/redshift-tablecompiler.js +134 -134
- package/lib/dialects/redshift/schema/redshift-viewcompiler.js +11 -11
- package/lib/dialects/redshift/transaction.js +32 -32
- package/lib/dialects/sqlite3/execution/sqlite-transaction.js +172 -172
- package/lib/dialects/sqlite3/index.js +263 -263
- package/lib/dialects/sqlite3/query/sqlite-querybuilder.js +33 -33
- package/lib/dialects/sqlite3/query/sqlite-querycompiler.js +341 -341
- package/lib/dialects/sqlite3/schema/ddl.js +380 -380
- package/lib/dialects/sqlite3/schema/internal/compiler.js +327 -327
- package/lib/dialects/sqlite3/schema/internal/parser-combinator.js +161 -161
- package/lib/dialects/sqlite3/schema/internal/parser.js +638 -638
- package/lib/dialects/sqlite3/schema/internal/sqlite-ddl-operations.js +41 -41
- package/lib/dialects/sqlite3/schema/internal/tokenizer.js +38 -38
- package/lib/dialects/sqlite3/schema/internal/utils.js +12 -12
- package/lib/dialects/sqlite3/schema/sqlite-columncompiler.js +50 -50
- package/lib/dialects/sqlite3/schema/sqlite-compiler.js +80 -80
- package/lib/dialects/sqlite3/schema/sqlite-tablecompiler.js +364 -364
- package/lib/dialects/sqlite3/schema/sqlite-viewcompiler.js +40 -40
- package/lib/execution/batch-insert.js +51 -51
- package/lib/execution/internal/delay.js +6 -6
- package/lib/execution/internal/ensure-connection-callback.js +41 -41
- package/lib/execution/internal/query-executioner.js +62 -62
- package/lib/execution/runner.js +325 -325
- package/lib/execution/transaction.js +417 -417
- package/lib/formatter/formatterUtils.js +42 -42
- package/lib/formatter/rawFormatter.js +84 -84
- package/lib/formatter/wrappingFormatter.js +253 -253
- package/lib/formatter.js +25 -25
- package/lib/index.js +3 -3
- package/lib/knex-builder/FunctionHelper.js +80 -80
- package/lib/knex-builder/Knex.js +59 -59
- package/lib/knex-builder/internal/config-resolver.js +57 -57
- package/lib/knex-builder/internal/parse-connection.js +87 -87
- package/lib/knex-builder/make-knex.js +345 -345
- package/lib/logger.js +76 -76
- package/lib/migrations/common/MigrationsLoader.js +36 -36
- package/lib/migrations/migrate/MigrationGenerator.js +84 -84
- package/lib/migrations/migrate/Migrator.js +632 -632
- package/lib/migrations/migrate/migrate-stub.js +17 -17
- package/lib/migrations/migrate/migration-list-resolver.js +33 -33
- package/lib/migrations/migrate/migrator-configuration-merger.js +58 -58
- package/lib/migrations/migrate/sources/fs-migrations.js +74 -74
- package/lib/migrations/migrate/stub/cjs.stub +15 -15
- package/lib/migrations/migrate/stub/coffee.stub +13 -13
- package/lib/migrations/migrate/stub/eg.stub +14 -14
- package/lib/migrations/migrate/stub/js-schema.stub +22 -22
- package/lib/migrations/migrate/stub/js.stub +22 -22
- package/lib/migrations/migrate/stub/knexfile-coffee.stub +34 -34
- package/lib/migrations/migrate/stub/knexfile-eg.stub +43 -43
- package/lib/migrations/migrate/stub/knexfile-js.stub +47 -47
- package/lib/migrations/migrate/stub/knexfile-ls.stub +35 -35
- package/lib/migrations/migrate/stub/knexfile-ts.stub +47 -47
- package/lib/migrations/migrate/stub/ls.stub +14 -14
- package/lib/migrations/migrate/stub/mjs.stub +23 -23
- package/lib/migrations/migrate/stub/ts-schema.stub +21 -21
- package/lib/migrations/migrate/stub/ts.stub +21 -21
- package/lib/migrations/migrate/table-creator.js +77 -77
- package/lib/migrations/migrate/table-resolver.js +27 -27
- package/lib/migrations/seed/Seeder.js +137 -137
- package/lib/migrations/seed/seed-stub.js +13 -13
- package/lib/migrations/seed/seeder-configuration-merger.js +60 -60
- package/lib/migrations/seed/sources/fs-seeds.js +65 -65
- package/lib/migrations/seed/stub/coffee.stub +9 -9
- package/lib/migrations/seed/stub/eg.stub +11 -11
- package/lib/migrations/seed/stub/js.stub +13 -13
- package/lib/migrations/seed/stub/ls.stub +11 -11
- package/lib/migrations/seed/stub/mjs.stub +12 -12
- package/lib/migrations/seed/stub/ts.stub +13 -13
- package/lib/migrations/util/fs.js +86 -86
- package/lib/migrations/util/import-file.js +12 -12
- package/lib/migrations/util/is-module-type.js +9 -9
- package/lib/migrations/util/template.js +52 -52
- package/lib/migrations/util/timestamp.js +14 -14
- package/lib/query/analytic.js +52 -52
- package/lib/query/constants.js +15 -15
- package/lib/query/joinclause.js +270 -270
- package/lib/query/method-constants.js +136 -136
- package/lib/query/querybuilder.js +1793 -1793
- package/lib/query/querycompiler.js +1634 -1634
- package/lib/raw.js +139 -139
- package/lib/ref.js +39 -39
- package/lib/schema/builder.js +115 -115
- package/lib/schema/columnbuilder.js +146 -146
- package/lib/schema/columncompiler.js +307 -307
- package/lib/schema/compiler.js +187 -187
- package/lib/schema/internal/helpers.js +55 -55
- package/lib/schema/tablebuilder.js +379 -379
- package/lib/schema/tablecompiler.js +450 -450
- package/lib/schema/viewbuilder.js +92 -92
- package/lib/schema/viewcompiler.js +138 -138
- package/lib/util/finally-mixin.js +13 -13
- package/lib/util/helpers.js +95 -95
- package/lib/util/is.js +32 -32
- package/lib/util/nanoid.js +40 -40
- package/lib/util/noop.js +1 -1
- package/lib/util/save-async-stack.js +14 -14
- package/lib/util/security.js +32 -32
- package/lib/util/string.js +190 -190
- package/lib/util/timeout.js +29 -29
- package/package.json +294 -293
- package/scripts/act-testing/act.sh +19 -19
- package/scripts/act-testing/merged-no-label.json +11 -11
- package/scripts/act-testing/merged-patch-labeled.json +12 -12
- package/scripts/act-testing/merged-skip-labeled.json +12 -12
- package/scripts/act-testing/not-merged-patch-labeled.json +12 -12
- package/scripts/build-for-release.sh +121 -121
- package/scripts/build.js +125 -125
- package/scripts/clean.js +31 -31
- package/scripts/docker-compose.yml +150 -150
- package/scripts/format-changelog.js +55 -55
- package/scripts/next-release-howto.md +24 -24
- package/scripts/oracledb-install-driver-libs.sh +82 -82
- package/scripts/release.sh +36 -36
- package/scripts/runkit-example.js +35 -35
- package/scripts/stress-test/README.txt +18 -18
- package/scripts/stress-test/docker-compose.yml +55 -55
- package/scripts/stress-test/knex-stress-test.js +212 -212
- package/scripts/stress-test/mysql2-random-hanging-every-now-and-then.js +149 -149
- package/scripts/stress-test/mysql2-sudden-exit-without-error.js +101 -101
- package/scripts/stress-test/reconnect-test-mysql-based-drivers.js +188 -188
- package/types/index.d.mts +11 -0
- package/types/index.d.ts +3321 -3321
- package/types/result.d.ts +27 -27
- package/types/tables.d.ts +4 -4
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
// Stub Migrate:
|
|
2
|
-
// Used for now in browser builds, where filesystem access isn't
|
|
3
|
-
// available.
|
|
4
|
-
const StubMigrate = (module.exports = function () {});
|
|
5
|
-
|
|
6
|
-
const noSuchMethod = async function () {
|
|
7
|
-
throw new Error('Migrations are not supported');
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
StubMigrate.prototype = {
|
|
11
|
-
make: noSuchMethod,
|
|
12
|
-
latest: noSuchMethod,
|
|
13
|
-
rollback: noSuchMethod,
|
|
14
|
-
currentVersion: noSuchMethod,
|
|
15
|
-
up: noSuchMethod,
|
|
16
|
-
down: noSuchMethod,
|
|
17
|
-
};
|
|
1
|
+
// Stub Migrate:
|
|
2
|
+
// Used for now in browser builds, where filesystem access isn't
|
|
3
|
+
// available.
|
|
4
|
+
const StubMigrate = (module.exports = function () {});
|
|
5
|
+
|
|
6
|
+
const noSuchMethod = async function () {
|
|
7
|
+
throw new Error('Migrations are not supported');
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
StubMigrate.prototype = {
|
|
11
|
+
make: noSuchMethod,
|
|
12
|
+
latest: noSuchMethod,
|
|
13
|
+
rollback: noSuchMethod,
|
|
14
|
+
currentVersion: noSuchMethod,
|
|
15
|
+
up: noSuchMethod,
|
|
16
|
+
down: noSuchMethod,
|
|
17
|
+
};
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
const { getTableName } = require('./table-resolver');
|
|
2
|
-
const { ensureTable } = require('./table-creator');
|
|
3
|
-
|
|
4
|
-
// Lists all available migration versions, as a sorted array.
|
|
5
|
-
function listAll(migrationSource, loadExtensions) {
|
|
6
|
-
return migrationSource.getMigrations(loadExtensions);
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
// Lists all migrations that have been completed for the current db, as an
|
|
10
|
-
// array.
|
|
11
|
-
async function listCompleted(tableName, schemaName, trxOrKnex) {
|
|
12
|
-
await ensureTable(tableName, schemaName, trxOrKnex);
|
|
13
|
-
|
|
14
|
-
return await trxOrKnex
|
|
15
|
-
.from(getTableName(tableName, schemaName))
|
|
16
|
-
.orderBy('id')
|
|
17
|
-
.select('name');
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
// Gets the migration list from the migration directory specified in config, as well as
|
|
21
|
-
// the list of completed migrations to check what should be run.
|
|
22
|
-
function listAllAndCompleted(config, trxOrKnex) {
|
|
23
|
-
return Promise.all([
|
|
24
|
-
listAll(config.migrationSource, config.loadExtensions),
|
|
25
|
-
listCompleted(config.tableName, config.schemaName, trxOrKnex),
|
|
26
|
-
]);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
module.exports = {
|
|
30
|
-
listAll,
|
|
31
|
-
listAllAndCompleted,
|
|
32
|
-
listCompleted,
|
|
33
|
-
};
|
|
1
|
+
const { getTableName } = require('./table-resolver');
|
|
2
|
+
const { ensureTable } = require('./table-creator');
|
|
3
|
+
|
|
4
|
+
// Lists all available migration versions, as a sorted array.
|
|
5
|
+
function listAll(migrationSource, loadExtensions) {
|
|
6
|
+
return migrationSource.getMigrations(loadExtensions);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
// Lists all migrations that have been completed for the current db, as an
|
|
10
|
+
// array.
|
|
11
|
+
async function listCompleted(tableName, schemaName, trxOrKnex) {
|
|
12
|
+
await ensureTable(tableName, schemaName, trxOrKnex);
|
|
13
|
+
|
|
14
|
+
return await trxOrKnex
|
|
15
|
+
.from(getTableName(tableName, schemaName))
|
|
16
|
+
.orderBy('id')
|
|
17
|
+
.select('name');
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Gets the migration list from the migration directory specified in config, as well as
|
|
21
|
+
// the list of completed migrations to check what should be run.
|
|
22
|
+
function listAllAndCompleted(config, trxOrKnex) {
|
|
23
|
+
return Promise.all([
|
|
24
|
+
listAll(config.migrationSource, config.loadExtensions),
|
|
25
|
+
listCompleted(config.tableName, config.schemaName, trxOrKnex),
|
|
26
|
+
]);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
module.exports = {
|
|
30
|
+
listAll,
|
|
31
|
+
listAllAndCompleted,
|
|
32
|
+
listCompleted,
|
|
33
|
+
};
|
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
const { FsMigrations } = require('./sources/fs-migrations');
|
|
2
|
-
const Logger = require('../../logger');
|
|
3
|
-
const { DEFAULT_LOAD_EXTENSIONS } = require('../common/MigrationsLoader');
|
|
4
|
-
const defaultLogger = new Logger();
|
|
5
|
-
|
|
6
|
-
const CONFIG_DEFAULT = Object.freeze({
|
|
7
|
-
extension: 'js',
|
|
8
|
-
loadExtensions: DEFAULT_LOAD_EXTENSIONS,
|
|
9
|
-
tableName: 'knex_migrations',
|
|
10
|
-
schemaName: null,
|
|
11
|
-
directory: './migrations',
|
|
12
|
-
disableTransactions: false,
|
|
13
|
-
disableMigrationsListValidation: false,
|
|
14
|
-
sortDirsSeparately: false,
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
function getMergedConfig(config, currentConfig, logger = defaultLogger) {
|
|
18
|
-
// config is the user specified config, mergedConfig has defaults and current config
|
|
19
|
-
// applied to it.
|
|
20
|
-
const mergedConfig = Object.assign(
|
|
21
|
-
{},
|
|
22
|
-
CONFIG_DEFAULT,
|
|
23
|
-
currentConfig || {},
|
|
24
|
-
config
|
|
25
|
-
);
|
|
26
|
-
|
|
27
|
-
if (
|
|
28
|
-
config &&
|
|
29
|
-
// If user specifies any FS related config,
|
|
30
|
-
// clear specified migrationSource to avoid ambiguity
|
|
31
|
-
(config.directory ||
|
|
32
|
-
config.sortDirsSeparately !== undefined ||
|
|
33
|
-
config.loadExtensions)
|
|
34
|
-
) {
|
|
35
|
-
if (config.migrationSource) {
|
|
36
|
-
logger.warn(
|
|
37
|
-
'FS-related option specified for migration configuration. This resets migrationSource to default FsMigrations'
|
|
38
|
-
);
|
|
39
|
-
}
|
|
40
|
-
mergedConfig.migrationSource = null;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// If the user has not specified any configs, we need to
|
|
44
|
-
// default to fs migrations to maintain compatibility
|
|
45
|
-
if (!mergedConfig.migrationSource) {
|
|
46
|
-
mergedConfig.migrationSource = new FsMigrations(
|
|
47
|
-
mergedConfig.directory,
|
|
48
|
-
mergedConfig.sortDirsSeparately,
|
|
49
|
-
mergedConfig.loadExtensions
|
|
50
|
-
);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return mergedConfig;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
module.exports = {
|
|
57
|
-
getMergedConfig,
|
|
58
|
-
};
|
|
1
|
+
const { FsMigrations } = require('./sources/fs-migrations');
|
|
2
|
+
const Logger = require('../../logger');
|
|
3
|
+
const { DEFAULT_LOAD_EXTENSIONS } = require('../common/MigrationsLoader');
|
|
4
|
+
const defaultLogger = new Logger();
|
|
5
|
+
|
|
6
|
+
const CONFIG_DEFAULT = Object.freeze({
|
|
7
|
+
extension: 'js',
|
|
8
|
+
loadExtensions: DEFAULT_LOAD_EXTENSIONS,
|
|
9
|
+
tableName: 'knex_migrations',
|
|
10
|
+
schemaName: null,
|
|
11
|
+
directory: './migrations',
|
|
12
|
+
disableTransactions: false,
|
|
13
|
+
disableMigrationsListValidation: false,
|
|
14
|
+
sortDirsSeparately: false,
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
function getMergedConfig(config, currentConfig, logger = defaultLogger) {
|
|
18
|
+
// config is the user specified config, mergedConfig has defaults and current config
|
|
19
|
+
// applied to it.
|
|
20
|
+
const mergedConfig = Object.assign(
|
|
21
|
+
{},
|
|
22
|
+
CONFIG_DEFAULT,
|
|
23
|
+
currentConfig || {},
|
|
24
|
+
config
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
if (
|
|
28
|
+
config &&
|
|
29
|
+
// If user specifies any FS related config,
|
|
30
|
+
// clear specified migrationSource to avoid ambiguity
|
|
31
|
+
(config.directory ||
|
|
32
|
+
config.sortDirsSeparately !== undefined ||
|
|
33
|
+
config.loadExtensions)
|
|
34
|
+
) {
|
|
35
|
+
if (config.migrationSource) {
|
|
36
|
+
logger.warn(
|
|
37
|
+
'FS-related option specified for migration configuration. This resets migrationSource to default FsMigrations'
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
mergedConfig.migrationSource = null;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// If the user has not specified any configs, we need to
|
|
44
|
+
// default to fs migrations to maintain compatibility
|
|
45
|
+
if (!mergedConfig.migrationSource) {
|
|
46
|
+
mergedConfig.migrationSource = new FsMigrations(
|
|
47
|
+
mergedConfig.directory,
|
|
48
|
+
mergedConfig.sortDirsSeparately,
|
|
49
|
+
mergedConfig.loadExtensions
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return mergedConfig;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
module.exports = {
|
|
57
|
+
getMergedConfig,
|
|
58
|
+
};
|
|
@@ -1,74 +1,74 @@
|
|
|
1
|
-
const path = require('path');
|
|
2
|
-
const sortBy = require('lodash/sortBy');
|
|
3
|
-
|
|
4
|
-
const { readdir } = require('../../util/fs');
|
|
5
|
-
const { AbstractMigrationsLoader } = require('../../common/MigrationsLoader');
|
|
6
|
-
|
|
7
|
-
class FsMigrations extends AbstractMigrationsLoader {
|
|
8
|
-
/**
|
|
9
|
-
* Gets the migration names
|
|
10
|
-
* @returns Promise<string[]>
|
|
11
|
-
*/
|
|
12
|
-
getMigrations(loadExtensions) {
|
|
13
|
-
// Get a list of files in all specified migration directories
|
|
14
|
-
const readMigrationsPromises = this.migrationsPaths.map((configDir) => {
|
|
15
|
-
const absoluteDir = path.resolve(process.cwd(), configDir);
|
|
16
|
-
return readdir(absoluteDir).then((files) => ({
|
|
17
|
-
files,
|
|
18
|
-
configDir,
|
|
19
|
-
absoluteDir,
|
|
20
|
-
}));
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
return Promise.all(readMigrationsPromises).then((allMigrations) => {
|
|
24
|
-
const migrations = allMigrations.reduce((acc, migrationDirectory) => {
|
|
25
|
-
// When true, files inside the folder should be sorted
|
|
26
|
-
if (this.sortDirsSeparately) {
|
|
27
|
-
migrationDirectory.files = migrationDirectory.files.sort();
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
migrationDirectory.files.forEach((file) =>
|
|
31
|
-
acc.push({ file, directory: migrationDirectory.configDir })
|
|
32
|
-
);
|
|
33
|
-
|
|
34
|
-
return acc;
|
|
35
|
-
}, []);
|
|
36
|
-
|
|
37
|
-
// If true we have already sorted the migrations inside the folders
|
|
38
|
-
// return the migrations fully qualified
|
|
39
|
-
if (this.sortDirsSeparately) {
|
|
40
|
-
return filterMigrations(
|
|
41
|
-
this,
|
|
42
|
-
migrations,
|
|
43
|
-
loadExtensions || this.loadExtensions
|
|
44
|
-
);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return filterMigrations(
|
|
48
|
-
this,
|
|
49
|
-
sortBy(migrations, 'file'),
|
|
50
|
-
loadExtensions || this.loadExtensions
|
|
51
|
-
);
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
getMigrationName(migration) {
|
|
56
|
-
return migration.file;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
getMigration(migrationInfo) {
|
|
60
|
-
return this.getFile(migrationInfo);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
function filterMigrations(migrationSource, migrations, loadExtensions) {
|
|
65
|
-
return migrations.filter((migration) => {
|
|
66
|
-
const migrationName = migrationSource.getMigrationName(migration);
|
|
67
|
-
const extension = path.extname(migrationName);
|
|
68
|
-
return loadExtensions.includes(extension);
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
module.exports = {
|
|
73
|
-
FsMigrations,
|
|
74
|
-
};
|
|
1
|
+
const path = require('path');
|
|
2
|
+
const sortBy = require('lodash/sortBy');
|
|
3
|
+
|
|
4
|
+
const { readdir } = require('../../util/fs');
|
|
5
|
+
const { AbstractMigrationsLoader } = require('../../common/MigrationsLoader');
|
|
6
|
+
|
|
7
|
+
class FsMigrations extends AbstractMigrationsLoader {
|
|
8
|
+
/**
|
|
9
|
+
* Gets the migration names
|
|
10
|
+
* @returns Promise<string[]>
|
|
11
|
+
*/
|
|
12
|
+
getMigrations(loadExtensions) {
|
|
13
|
+
// Get a list of files in all specified migration directories
|
|
14
|
+
const readMigrationsPromises = this.migrationsPaths.map((configDir) => {
|
|
15
|
+
const absoluteDir = path.resolve(process.cwd(), configDir);
|
|
16
|
+
return readdir(absoluteDir).then((files) => ({
|
|
17
|
+
files,
|
|
18
|
+
configDir,
|
|
19
|
+
absoluteDir,
|
|
20
|
+
}));
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
return Promise.all(readMigrationsPromises).then((allMigrations) => {
|
|
24
|
+
const migrations = allMigrations.reduce((acc, migrationDirectory) => {
|
|
25
|
+
// When true, files inside the folder should be sorted
|
|
26
|
+
if (this.sortDirsSeparately) {
|
|
27
|
+
migrationDirectory.files = migrationDirectory.files.sort();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
migrationDirectory.files.forEach((file) =>
|
|
31
|
+
acc.push({ file, directory: migrationDirectory.configDir })
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
return acc;
|
|
35
|
+
}, []);
|
|
36
|
+
|
|
37
|
+
// If true we have already sorted the migrations inside the folders
|
|
38
|
+
// return the migrations fully qualified
|
|
39
|
+
if (this.sortDirsSeparately) {
|
|
40
|
+
return filterMigrations(
|
|
41
|
+
this,
|
|
42
|
+
migrations,
|
|
43
|
+
loadExtensions || this.loadExtensions
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return filterMigrations(
|
|
48
|
+
this,
|
|
49
|
+
sortBy(migrations, 'file'),
|
|
50
|
+
loadExtensions || this.loadExtensions
|
|
51
|
+
);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
getMigrationName(migration) {
|
|
56
|
+
return migration.file;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
getMigration(migrationInfo) {
|
|
60
|
+
return this.getFile(migrationInfo);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function filterMigrations(migrationSource, migrations, loadExtensions) {
|
|
65
|
+
return migrations.filter((migration) => {
|
|
66
|
+
const migrationName = migrationSource.getMigrationName(migration);
|
|
67
|
+
const extension = path.extname(migrationName);
|
|
68
|
+
return loadExtensions.includes(extension);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
module.exports = {
|
|
73
|
+
FsMigrations,
|
|
74
|
+
};
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
exports.up = function(knex) {
|
|
3
|
-
<% if (d.tableName) { %>
|
|
4
|
-
return knex.schema.createTable("<%= d.tableName %>", function(t) {
|
|
5
|
-
t.increments();
|
|
6
|
-
t.timestamp();
|
|
7
|
-
});
|
|
8
|
-
<% } %>
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
exports.down = function(knex) {
|
|
12
|
-
<% if (d.tableName) { %>
|
|
13
|
-
return knex.schema.dropTable("<%= d.tableName %>");
|
|
14
|
-
<% } %>
|
|
15
|
-
};
|
|
1
|
+
|
|
2
|
+
exports.up = function(knex) {
|
|
3
|
+
<% if (d.tableName) { %>
|
|
4
|
+
return knex.schema.createTable("<%= d.tableName %>", function(t) {
|
|
5
|
+
t.increments();
|
|
6
|
+
t.timestamp();
|
|
7
|
+
});
|
|
8
|
+
<% } %>
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
exports.down = function(knex) {
|
|
12
|
+
<% if (d.tableName) { %>
|
|
13
|
+
return knex.schema.dropTable("<%= d.tableName %>");
|
|
14
|
+
<% } %>
|
|
15
|
+
};
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
exports.up = (knex) ->
|
|
3
|
-
<% if (d.tableName) { %>
|
|
4
|
-
knex.schema.createTable "<%= d.tableName %>", (t) ->
|
|
5
|
-
t.increments()
|
|
6
|
-
t.timestamp()
|
|
7
|
-
<% } %>
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
exports.down = (knex) ->
|
|
11
|
-
<% if (d.tableName) { %>
|
|
12
|
-
knex.schema.dropTable "<%= d.tableName %>"
|
|
13
|
-
<% } %>
|
|
1
|
+
|
|
2
|
+
exports.up = (knex) ->
|
|
3
|
+
<% if (d.tableName) { %>
|
|
4
|
+
knex.schema.createTable "<%= d.tableName %>", (t) ->
|
|
5
|
+
t.increments()
|
|
6
|
+
t.timestamp()
|
|
7
|
+
<% } %>
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
exports.down = (knex) ->
|
|
11
|
+
<% if (d.tableName) { %>
|
|
12
|
+
knex.schema.dropTable "<%= d.tableName %>"
|
|
13
|
+
<% } %>
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
provide: up, down
|
|
2
|
-
|
|
3
|
-
up = (knex) ->
|
|
4
|
-
<% if (d.tableName) { %>
|
|
5
|
-
knex.schema.createTable "<%= d.tableName %>": t ->
|
|
6
|
-
t.increments()
|
|
7
|
-
t.timestamp()
|
|
8
|
-
<% } %>
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
down = (knex) ->
|
|
12
|
-
<% if (d.tableName) { %>
|
|
13
|
-
knex.schema.dropTable("<%= d.tableName %>")
|
|
14
|
-
<% } %>
|
|
1
|
+
provide: up, down
|
|
2
|
+
|
|
3
|
+
up = (knex) ->
|
|
4
|
+
<% if (d.tableName) { %>
|
|
5
|
+
knex.schema.createTable "<%= d.tableName %>": t ->
|
|
6
|
+
t.increments()
|
|
7
|
+
t.timestamp()
|
|
8
|
+
<% } %>
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
down = (knex) ->
|
|
12
|
+
<% if (d.tableName) { %>
|
|
13
|
+
knex.schema.dropTable("<%= d.tableName %>")
|
|
14
|
+
<% } %>
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @param { import("knex").Knex } knex
|
|
3
|
-
* @returns { Promise<void> }
|
|
4
|
-
*/
|
|
5
|
-
exports.up = function({schema}) {
|
|
6
|
-
<% if (d.tableName) { %>
|
|
7
|
-
return schema.createTable("<%= d.tableName %>", function(t) {
|
|
8
|
-
t.increments();
|
|
9
|
-
t.timestamp();
|
|
10
|
-
});
|
|
11
|
-
<% } %>
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* @param { import("knex").Knex } knex
|
|
16
|
-
* @returns { Promise<void> }
|
|
17
|
-
*/
|
|
18
|
-
exports.down = function({schema}) {
|
|
19
|
-
<% if (d.tableName) { %>
|
|
20
|
-
return schema.dropTable("<%= d.tableName %>");
|
|
21
|
-
<% } %>
|
|
22
|
-
};
|
|
1
|
+
/**
|
|
2
|
+
* @param { import("knex").Knex } knex
|
|
3
|
+
* @returns { Promise<void> }
|
|
4
|
+
*/
|
|
5
|
+
exports.up = function({schema}) {
|
|
6
|
+
<% if (d.tableName) { %>
|
|
7
|
+
return schema.createTable("<%= d.tableName %>", function(t) {
|
|
8
|
+
t.increments();
|
|
9
|
+
t.timestamp();
|
|
10
|
+
});
|
|
11
|
+
<% } %>
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @param { import("knex").Knex } knex
|
|
16
|
+
* @returns { Promise<void> }
|
|
17
|
+
*/
|
|
18
|
+
exports.down = function({schema}) {
|
|
19
|
+
<% if (d.tableName) { %>
|
|
20
|
+
return schema.dropTable("<%= d.tableName %>");
|
|
21
|
+
<% } %>
|
|
22
|
+
};
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @param { import("knex").Knex } knex
|
|
3
|
-
* @returns { Promise<void> }
|
|
4
|
-
*/
|
|
5
|
-
exports.up = function(knex) {
|
|
6
|
-
<% if (d.tableName) { %>
|
|
7
|
-
return knex.schema.createTable("<%= d.tableName %>", function(t) {
|
|
8
|
-
t.increments();
|
|
9
|
-
t.timestamp();
|
|
10
|
-
});
|
|
11
|
-
<% } %>
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* @param { import("knex").Knex } knex
|
|
16
|
-
* @returns { Promise<void> }
|
|
17
|
-
*/
|
|
18
|
-
exports.down = function(knex) {
|
|
19
|
-
<% if (d.tableName) { %>
|
|
20
|
-
return knex.schema.dropTable("<%= d.tableName %>");
|
|
21
|
-
<% } %>
|
|
22
|
-
};
|
|
1
|
+
/**
|
|
2
|
+
* @param { import("knex").Knex } knex
|
|
3
|
+
* @returns { Promise<void> }
|
|
4
|
+
*/
|
|
5
|
+
exports.up = function(knex) {
|
|
6
|
+
<% if (d.tableName) { %>
|
|
7
|
+
return knex.schema.createTable("<%= d.tableName %>", function(t) {
|
|
8
|
+
t.increments();
|
|
9
|
+
t.timestamp();
|
|
10
|
+
});
|
|
11
|
+
<% } %>
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @param { import("knex").Knex } knex
|
|
16
|
+
* @returns { Promise<void> }
|
|
17
|
+
*/
|
|
18
|
+
exports.down = function(knex) {
|
|
19
|
+
<% if (d.tableName) { %>
|
|
20
|
+
return knex.schema.dropTable("<%= d.tableName %>");
|
|
21
|
+
<% } %>
|
|
22
|
+
};
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
# Update with your config settings.
|
|
2
|
-
|
|
3
|
-
module.exports =
|
|
4
|
-
|
|
5
|
-
development:
|
|
6
|
-
client: 'sqlite3'
|
|
7
|
-
connection:
|
|
8
|
-
filename: './dev.sqlite3'
|
|
9
|
-
migrations:
|
|
10
|
-
tableName: 'knex_migrations'
|
|
11
|
-
|
|
12
|
-
staging:
|
|
13
|
-
client: 'postgresql'
|
|
14
|
-
connection:
|
|
15
|
-
database: 'my_db'
|
|
16
|
-
user: 'username'
|
|
17
|
-
password: 'password'
|
|
18
|
-
pool:
|
|
19
|
-
min: 2
|
|
20
|
-
max: 10
|
|
21
|
-
migrations:
|
|
22
|
-
tableName: 'knex_migrations'
|
|
23
|
-
|
|
24
|
-
production:
|
|
25
|
-
client: 'postgresql'
|
|
26
|
-
connection:
|
|
27
|
-
database: 'my_db'
|
|
28
|
-
user: 'username'
|
|
29
|
-
password: 'password'
|
|
30
|
-
pool:
|
|
31
|
-
min: 2
|
|
32
|
-
max: 10
|
|
33
|
-
migrations:
|
|
34
|
-
tableName: 'knex_migrations'
|
|
1
|
+
# Update with your config settings.
|
|
2
|
+
|
|
3
|
+
module.exports =
|
|
4
|
+
|
|
5
|
+
development:
|
|
6
|
+
client: 'sqlite3'
|
|
7
|
+
connection:
|
|
8
|
+
filename: './dev.sqlite3'
|
|
9
|
+
migrations:
|
|
10
|
+
tableName: 'knex_migrations'
|
|
11
|
+
|
|
12
|
+
staging:
|
|
13
|
+
client: 'postgresql'
|
|
14
|
+
connection:
|
|
15
|
+
database: 'my_db'
|
|
16
|
+
user: 'username'
|
|
17
|
+
password: 'password'
|
|
18
|
+
pool:
|
|
19
|
+
min: 2
|
|
20
|
+
max: 10
|
|
21
|
+
migrations:
|
|
22
|
+
tableName: 'knex_migrations'
|
|
23
|
+
|
|
24
|
+
production:
|
|
25
|
+
client: 'postgresql'
|
|
26
|
+
connection:
|
|
27
|
+
database: 'my_db'
|
|
28
|
+
user: 'username'
|
|
29
|
+
password: 'password'
|
|
30
|
+
pool:
|
|
31
|
+
min: 2
|
|
32
|
+
max: 10
|
|
33
|
+
migrations:
|
|
34
|
+
tableName: 'knex_migrations'
|