@zakodium/adonis-mongodb 0.14.3 → 0.15.0
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/lib/adonis-typings/migration.d.ts +2 -1
- package/lib/commands/MongodbListMigrations.js +1 -1
- package/lib/commands/MongodbMakeMigration.js +1 -1
- package/lib/commands/MongodbMigrate.js +31 -13
- package/lib/commands/util/MigrationCommand.d.ts +1 -2
- package/lib/commands/util/MigrationCommand.js +2 -3
- package/lib/src/Database/Connection.js +2 -2
- package/lib/src/Migration.js +15 -16
- package/lib/src/Model/proxyHandler.js +3 -3
- package/package.json +11 -11
- package/src/Database/Connection.ts +1 -1
- package/src/Migration.ts +15 -20
- package/src/Model/proxyHandler.ts +2 -2
|
@@ -7,6 +7,7 @@ declare module '@ioc:Zakodium/Mongodb/Migration' {
|
|
|
7
7
|
dropIndex(collectionName: string, indexName: string, options?: Omit<DropIndexesOptions, 'session'>): void;
|
|
8
8
|
defer(callback: (db: Db, client: ClientSession) => Promise<void>): void;
|
|
9
9
|
abstract up(): void;
|
|
10
|
-
|
|
10
|
+
afterUpSuccess?(): unknown;
|
|
11
|
+
execUp(session: ClientSession): Promise<void>;
|
|
11
12
|
}
|
|
12
13
|
}
|
|
@@ -62,4 +62,4 @@ __decorate([
|
|
|
62
62
|
__metadata("design:returntype", Promise)
|
|
63
63
|
], MongodbListMigrations.prototype, "run", null);
|
|
64
64
|
exports.default = MongodbListMigrations;
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9uZ29kYkxpc3RNaWdyYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vY29tbWFuZHMvTW9uZ29kYkxpc3RNaWdyYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0VBQXlEO0FBQ3pELDREQUFrQztBQUlsQywrRUFBdUQ7QUFFdkQsTUFBcUIscUJBQXNCLFNBQVEsMEJBQWdCO0lBUXBELEFBQU4sS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFvQjtRQUNuQyxJQUFJO1lBQ0YsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hELE1BQU0sUUFBUSxHQUFHLE1BQU0sVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzdDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUNyRCxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRS9ELE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRXpELE1BQU0sS0FBSyxHQUFHLElBQUksb0JBQVEsQ0FBQztnQkFDekIsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDO2FBQzdDLENBQUMsQ0FBQztZQUVILE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDL0IsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDekQsQ0FBQztZQUVGOztlQUVHO1lBQ0gsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUN4RCxNQUFNLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7Z0JBRXJFLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3JDLEtBQUssQ0FBQyxJQUFJLENBQUM7b0JBQ1QsSUFBSTtvQkFDSixRQUFRO3dCQUNOLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7d0JBQ2hDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7b0JBQ2pDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtvQkFDaEMsV0FBVyxJQUFJLEVBQUU7aUJBQ2xCLENBQUMsQ0FBQzthQUNKO1lBRUQsc0NBQXNDO1lBQ3RDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDL0I7Z0JBQVM7WUFDUixNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDN0I7SUFDSCxDQUFDOztBQTlDYSxpQ0FBVyxHQUFHLDBCQUEwQixDQUFDO0FBQ3pDLGlDQUFXLEdBQUcseUJBQXlCLENBQUM7QUFDeEMsOEJBQVEsR0FBRztJQUN2QixPQUFPLEVBQUUsSUFBSTtDQUNkLENBQUM7QUFHVztJQURaLElBQUEsbUJBQU0sRUFBQyxDQUFDLDJCQUEyQixDQUFDLENBQUM7Ozs7Z0RBd0NyQztrQkEvQ2tCLHFCQUFxQiJ9
|
|
@@ -48,4 +48,4 @@ __decorate([
|
|
|
48
48
|
__metadata("design:type", String)
|
|
49
49
|
], MongodbMakeMigration.prototype, "connection", void 0);
|
|
50
50
|
exports.default = MongodbMakeMigration;
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9uZ29kYk1ha2VNaWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9jb21tYW5kcy9Nb25nb2RiTWFrZU1pZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLDBEQUE2QjtBQUU3QixnRUFBMkU7QUFFM0UsTUFBcUIsb0JBQXFCLFNBQVEsd0JBQVc7SUFhcEQsS0FBSyxDQUFDLEdBQUc7UUFDZCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7WUFDaEUsT0FBTyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7WUFDckIsT0FBTztTQUNSO1FBRUQsTUFBTSxNQUFNLEdBQUcsb0JBQW9CLENBQUM7UUFFcEMsTUFBTSxJQUFJLEdBQUcsbUJBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLCtCQUErQixDQUFDLENBQUM7UUFFbkUsSUFBSSxDQUFDLFNBQVM7YUFDWCxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDO2FBQ3hFLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDVixjQUFjLENBQUMsTUFBTSxDQUFDO2FBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQzthQUNqQyxLQUFLLENBQUM7WUFDTCxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUN4RCxDQUFDLENBQ0YsV0FBVztTQUNiLENBQUMsQ0FBQztRQUNMLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM3QixDQUFDOztBQWxDYSxnQ0FBVyxHQUFHLHdCQUF3QixDQUFDO0FBQ3ZDLGdDQUFXLEdBQUcsMkJBQTJCLENBQUM7QUFDMUMsNkJBQVEsR0FBRztJQUN2QixPQUFPLEVBQUUsSUFBSTtDQUNkLENBQUM7QUFHSztJQUROLGlCQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsV0FBVyxFQUFFLDRCQUE0QixFQUFFLENBQUM7O2tEQUN2QztBQUdiO0lBRE4sa0JBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxXQUFXLEVBQUUsOENBQThDLEVBQUUsQ0FBQzs7d0RBQ3BEO2tCQVhQLG9CQUFvQiJ9
|
|
@@ -70,15 +70,22 @@ class MongodbMigrate extends MigrationCommand_1.default {
|
|
|
70
70
|
if (value.length === 1) {
|
|
71
71
|
newBatch = value[0].batch + 1;
|
|
72
72
|
}
|
|
73
|
-
let
|
|
73
|
+
let lastMigrationError = null;
|
|
74
74
|
for (const { name, file } of unregisteredMigrations) {
|
|
75
|
+
let migration;
|
|
76
|
+
try {
|
|
77
|
+
const { Migration: MigrationConstructor, description } = await this.importMigration(file);
|
|
78
|
+
this.logger.info(`Executing migration: ${name}${description ? ` - ${description}` : ''}`);
|
|
79
|
+
migration = new MigrationConstructor(connection.name, this.logger);
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
lastMigrationError = error;
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
75
85
|
// eslint-disable-next-line @typescript-eslint/no-loop-func
|
|
76
86
|
await connection.transaction(async (session) => {
|
|
77
87
|
try {
|
|
78
|
-
|
|
79
|
-
this.logger.info(`Executing migration: ${name}${description ? ` - ${description}` : ''}`);
|
|
80
|
-
const migration = new Migration(connection.name, this.logger, session);
|
|
81
|
-
await migration.execUp();
|
|
88
|
+
await migration.execUp(session);
|
|
82
89
|
await migrationColl.insertOne({
|
|
83
90
|
_id: new mongodb_1.ObjectId(),
|
|
84
91
|
name,
|
|
@@ -87,13 +94,24 @@ class MongodbMigrate extends MigrationCommand_1.default {
|
|
|
87
94
|
}, { session });
|
|
88
95
|
}
|
|
89
96
|
catch (error) {
|
|
90
|
-
|
|
97
|
+
lastMigrationError = error;
|
|
91
98
|
await session.abortTransaction();
|
|
92
99
|
}
|
|
93
100
|
});
|
|
94
|
-
if (
|
|
101
|
+
if (lastMigrationError) {
|
|
95
102
|
break;
|
|
96
103
|
}
|
|
104
|
+
if (migration.afterUpSuccess) {
|
|
105
|
+
try {
|
|
106
|
+
await migration.afterUpSuccess();
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
this.logger.warning(`Migration's afterUpSuccess call failed`);
|
|
110
|
+
// TODO: See if there can be a way in Ace commands to print error stack traces
|
|
111
|
+
// eslint-disable-next-line no-console
|
|
112
|
+
console.warn(error);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
97
115
|
successfullyExecuted++;
|
|
98
116
|
}
|
|
99
117
|
await migrationLockColl.updateOne({
|
|
@@ -104,18 +122,18 @@ class MongodbMigrate extends MigrationCommand_1.default {
|
|
|
104
122
|
});
|
|
105
123
|
if (successfullyExecuted > 0) {
|
|
106
124
|
const remainingMigrations = unregisteredMigrations.length - successfullyExecuted;
|
|
107
|
-
this.logger.info(`Successfully executed ${successfullyExecuted} migrations${
|
|
108
|
-
? `, ${remainingMigrations - (
|
|
125
|
+
this.logger.info(`Successfully executed ${successfullyExecuted} migrations${lastMigrationError ? `, 1 migration failed` : ''}${remainingMigrations > 0
|
|
126
|
+
? `, ${remainingMigrations - (lastMigrationError ? 1 : 0)} pending migrations remaining`
|
|
109
127
|
: ''}`);
|
|
110
128
|
}
|
|
111
|
-
else if (
|
|
129
|
+
else if (lastMigrationError === null) {
|
|
112
130
|
this.logger.info('No pending migration');
|
|
113
131
|
}
|
|
114
|
-
if (
|
|
132
|
+
if (lastMigrationError) {
|
|
115
133
|
this.logger.error('Migration failed');
|
|
116
134
|
// TODO: See if there can be a way in Ace commands to print error stack traces
|
|
117
135
|
// eslint-disable-next-line no-console
|
|
118
|
-
console.error(
|
|
136
|
+
console.error(lastMigrationError);
|
|
119
137
|
this.exitCode = 1;
|
|
120
138
|
}
|
|
121
139
|
}
|
|
@@ -140,4 +158,4 @@ __decorate([
|
|
|
140
158
|
__metadata("design:returntype", Promise)
|
|
141
159
|
], MongodbMigrate.prototype, "run", null);
|
|
142
160
|
exports.default = MongodbMigrate;
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9uZ29kYk1pZ3JhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9jb21tYW5kcy9Nb25nb2RiTWlncmF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0VBQXlEO0FBQ3pELHFDQUFtQztBQUtuQyw0RUFHaUM7QUFjakMsTUFBcUIsY0FBZSxTQUFRLDBCQUFnQjtJQU9sRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBb0I7UUFDbEQsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFL0QsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLFVBQVUsQ0FBQyxVQUFVLENBQ25ELDhDQUEyQixDQUM1QixDQUFDO1FBRUYsTUFBTSxhQUFhLEdBQUcsTUFBTSxVQUFVLENBQUMsVUFBVSxDQUMvQywwQ0FBdUIsQ0FDeEIsQ0FBQztRQUVGLE1BQU0sSUFBSSxHQUFHLE1BQU0saUJBQWlCLENBQUMsU0FBUyxDQUM1QztZQUNFLEdBQUcsRUFBRSxnQkFBZ0I7U0FDdEIsRUFDRDtZQUNFLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7U0FDeEIsRUFDRDtZQUNFLE1BQU0sRUFBRSxJQUFJO1NBQ2IsQ0FDRixDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLENBQUMsRUFBRTtZQUN4RCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1lBQ2xCLE9BQU87U0FDUjtRQUVELE1BQU0sYUFBYSxHQUFHLE1BQU0sYUFBYSxDQUFD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
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { BaseCommand } from '@adonisjs/core/build/standalone';
|
|
2
2
|
import { Logger } from '@poppinss/cliui/build/src/Logger';
|
|
3
|
-
import { ClientSession } from 'mongodb';
|
|
4
3
|
import type { ConnectionContract, DatabaseContract, MongodbConnectionConfig } from '@ioc:Zakodium/Mongodb/Database';
|
|
5
4
|
import type BaseMigration from '@ioc:Zakodium/Mongodb/Migration';
|
|
6
5
|
import { MigrationDescription } from './transformMigrations';
|
|
7
6
|
export declare const migrationCollectionName = "__adonis_mongodb";
|
|
8
7
|
export declare const migrationLockCollectionName = "__adonis_mongodb_lock";
|
|
9
8
|
interface MigrationModule {
|
|
10
|
-
default: new (connection: string | undefined, logger: Logger
|
|
9
|
+
default: new (connection: string | undefined, logger: Logger) => BaseMigration;
|
|
11
10
|
description?: string;
|
|
12
11
|
}
|
|
13
12
|
export default abstract class MigrationCommand extends BaseCommand {
|
|
@@ -76,8 +76,7 @@ class MigrationCommand extends standalone_1.BaseCommand {
|
|
|
76
76
|
return (0, transformMigrations_1.default)(rawMigrationFiles, this.logger);
|
|
77
77
|
}
|
|
78
78
|
async importMigration(file) {
|
|
79
|
-
|
|
80
|
-
const module = await (_a = file, Promise.resolve().then(() => __importStar(require(_a))));
|
|
79
|
+
const module = await Promise.resolve(`${file}`).then(s => __importStar(require(s)));
|
|
81
80
|
const { default: Migration, description } = module;
|
|
82
81
|
if (!Migration || typeof Migration !== 'function') {
|
|
83
82
|
throw new Error(`Migration in ${file} must export a default class`);
|
|
@@ -95,4 +94,4 @@ __decorate([
|
|
|
95
94
|
__metadata("design:type", String)
|
|
96
95
|
], MigrationCommand.prototype, "connection", void 0);
|
|
97
96
|
exports.default = MigrationCommand;
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uQ29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbW1hbmRzL3V0aWwvTWlncmF0aW9uQ29tbWFuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUEyQztBQUMzQywwREFBNkI7QUFFN0IsZ0VBQXFFO0FBVXJFLGdGQUUrQjtBQUUvQixNQUFNLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQztBQUV2QixRQUFBLHVCQUF1QixHQUFHLGtCQUFrQixDQUFDO0FBQzdDLFFBQUEsMkJBQTJCLEdBQUcsdUJBQXVCLENBQUM7QUFVbkUsTUFBOEIsZ0JBQWlCLFNBQVEsd0JBQVc7SUFXdEQsS0FBSyxDQUFDLGFBQWEsQ0FDM0IsRUFBb0I7UUFFcEIsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3ZELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLCtDQUErQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQ2xFLENBQUM7WUFDRixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztZQUNsQixNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNuQjtRQUNELE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVTLEtBQUssQ0FBQyxhQUFhLENBQzNCLE1BQStCO1FBRS9CLE1BQU0sT0FBTyxHQUNYLE1BQU0sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUMvQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVU7WUFDbkIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFZixNQUFNLGlCQUFpQixHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDekMsT0FBTzthQUNKLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsbUJBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDNUQsR0FBRyxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsRUFBRTtZQUM1QixJQUFJO2dCQUNGLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBQSxrQkFBTyxFQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUM1QyxPQUFPLEtBQUs7cUJBQ1QsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ2YsT0FBTztvQkFDTCx3REFBd0Q7b0JBQ3hELGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUMxRCxDQUFDO2dCQUNKLENBQUMsQ0FBQztxQkFDRCxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLG1CQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ25EO1lBQUMsTUFBTTtnQkFDTixPQUFPLEVBQUUsQ0FBQzthQUNYO1FBQ0gsQ0FBQyxDQUFDLENBQ0wsQ0FBQztRQUVGLE9BQU8sSUFBQSw2QkFBbUIsRUFBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVTLEtBQUssQ0FBQyxlQUFlLENBQzdCLElBQVk7UUFFWixNQUFNLE1BQU0sR0FBb0IseUJBQWEsSUFBSSx1Q0FBQyxDQUFDO1FBQ25ELE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUNuRCxJQUFJLENBQUMsU0FBUyxJQUFJLE9BQU8sU0FBUyxLQUFLLFVBQVUsRUFBRTtZQUNqRCxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixJQUFJLDhCQUE4QixDQUFDLENBQUM7U0FDckU7UUFDRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3BDLENBQUM7O0FBL0RhLHlCQUFRLEdBQUc7SUFDdkIsT0FBTyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBRVksNEJBQVcsR0FBRyxhQUFhLENBQUM7QUFDNUIsNEJBQVcsR0FBRyxhQUFhLENBQUM7QUFHbkM7SUFETixrQkFBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFdBQVcsRUFBRSw4Q0FBOEMsRUFBRSxDQUFDOztvREFDcEQ7a0JBVEUsZ0JBQWdCIn0=
|
|
@@ -22,7 +22,7 @@ class Connection extends node_events_1.EventEmitter {
|
|
|
22
22
|
this.connectPromise = null;
|
|
23
23
|
}
|
|
24
24
|
async _ensureDb() {
|
|
25
|
-
this.connect();
|
|
25
|
+
void this.connect();
|
|
26
26
|
if (!this.connectPromise) {
|
|
27
27
|
throw new utils_1.Exception(`unexpected MongoDB connection error`, 500, 'E_MONGODB_CONNECTION');
|
|
28
28
|
}
|
|
@@ -81,4 +81,4 @@ class Connection extends node_events_1.EventEmitter {
|
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
exports.Connection = Connection;
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29ubmVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9EYXRhYmFzZS9Db25uZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUEyQztBQUUzQywyQ0FBNEM7QUFDNUMscUNBQStFO0FBUS9FLElBQUssZ0JBR0o7QUFIRCxXQUFLLGdCQUFnQjtJQUNuQiwyQ0FBdUIsQ0FBQTtJQUN2QixpREFBNkIsQ0FBQTtBQUMvQixDQUFDLEVBSEksZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUdwQjtBQXlCRCxNQUFhLFVBQVcsU0FBUSwwQkFBWTtJQVUxQyxZQUNFLElBQVksRUFDWixNQUErQixFQUMvQixNQUFzQjtRQUV0QixLQUFLLEVBQUUsQ0FBQztRQUVSLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsWUFBWSxDQUFDO1FBQzVDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxxQkFBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQzdDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhO1NBQzdCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFTyxLQUFLLENBQUMsU0FBUztRQUNyQixLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN4QixNQUFNLElBQUksaUJBQVMsQ0FDakIscUNBQXFDLEVBQ3JDLEdBQUcsRUFDSCxzQkFBc0IsQ0FDdkIsQ0FBQztTQUNIO1FBQ0QsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFF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
|
package/lib/src/Migration.js
CHANGED
|
@@ -10,11 +10,10 @@ var MigrationType;
|
|
|
10
10
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
11
11
|
function createMigration(Database) {
|
|
12
12
|
class Migration {
|
|
13
|
-
constructor(connection, logger
|
|
13
|
+
constructor(connection, logger) {
|
|
14
14
|
this.$operations = [];
|
|
15
15
|
this.$connection = Database.connection(connection);
|
|
16
16
|
this.$logger = logger;
|
|
17
|
-
this.$session = session;
|
|
18
17
|
}
|
|
19
18
|
createCollections(collectionNames) {
|
|
20
19
|
for (const collectionName of collectionNames) {
|
|
@@ -49,12 +48,12 @@ function createMigration(Database) {
|
|
|
49
48
|
callback,
|
|
50
49
|
});
|
|
51
50
|
}
|
|
52
|
-
async execUp() {
|
|
51
|
+
async execUp(session) {
|
|
53
52
|
this.up();
|
|
54
|
-
await this._createCollections();
|
|
55
|
-
await this._dropIndexes();
|
|
56
|
-
await this._createIndexes();
|
|
57
|
-
await this._executeDeferred();
|
|
53
|
+
await this._createCollections(session);
|
|
54
|
+
await this._dropIndexes(session);
|
|
55
|
+
await this._createIndexes(session);
|
|
56
|
+
await this._executeDeferred(session);
|
|
58
57
|
}
|
|
59
58
|
async _listCollections() {
|
|
60
59
|
if (this.$collectionList)
|
|
@@ -68,31 +67,31 @@ function createMigration(Database) {
|
|
|
68
67
|
this.$collectionList = list.map((element) => element.name);
|
|
69
68
|
return this.$collectionList;
|
|
70
69
|
}
|
|
71
|
-
async _createCollections() {
|
|
70
|
+
async _createCollections(session) {
|
|
72
71
|
const db = await this.$connection.database();
|
|
73
72
|
for (const op of this.$operations.filter(isCreateCollection)) {
|
|
74
73
|
this.$logger.info(`Creating collection ${op.collectionName}`);
|
|
75
74
|
await db.createCollection(op.collectionName, {
|
|
76
|
-
session
|
|
75
|
+
session,
|
|
77
76
|
});
|
|
78
77
|
}
|
|
79
78
|
}
|
|
80
|
-
async _executeDeferred() {
|
|
79
|
+
async _executeDeferred(session) {
|
|
81
80
|
const db = await this.$connection.database();
|
|
82
81
|
for (const op of this.$operations.filter(isCustom)) {
|
|
83
|
-
await op.callback(db,
|
|
82
|
+
await op.callback(db, session);
|
|
84
83
|
}
|
|
85
84
|
}
|
|
86
|
-
async _dropIndexes() {
|
|
85
|
+
async _dropIndexes(session) {
|
|
87
86
|
const db = await this.$connection.database();
|
|
88
87
|
for (const op of this.$operations.filter(isDropIndex)) {
|
|
89
88
|
this.$logger.info(`Dropping index ${op.indexName} on ${op.collectionName}`);
|
|
90
89
|
const collection = db.collection(op.collectionName);
|
|
91
90
|
// Index deletion cannot be done in a transaction.
|
|
92
|
-
await collection.dropIndex(op.indexName, { ...op.options });
|
|
91
|
+
await collection.dropIndex(op.indexName, { ...op.options, session });
|
|
93
92
|
}
|
|
94
93
|
}
|
|
95
|
-
async _createIndexes() {
|
|
94
|
+
async _createIndexes(session) {
|
|
96
95
|
const db = await this.$connection.database();
|
|
97
96
|
const collections = await this._listCollections();
|
|
98
97
|
for (const op of this.$operations.filter(isCreateIndex)) {
|
|
@@ -102,7 +101,7 @@ function createMigration(Database) {
|
|
|
102
101
|
// Index creation will fail if collection pre-exists the transaction.
|
|
103
102
|
session: collections.includes(op.collectionName)
|
|
104
103
|
? undefined
|
|
105
|
-
:
|
|
104
|
+
: session,
|
|
106
105
|
});
|
|
107
106
|
}
|
|
108
107
|
}
|
|
@@ -122,4 +121,4 @@ function isDropIndex(op) {
|
|
|
122
121
|
function isCustom(op) {
|
|
123
122
|
return op.type === MigrationType.Custom;
|
|
124
123
|
}
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL01pZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWNBLElBQUssYUFLSjtBQUxELFdBQUssYUFBYTtJQUNoQixzREFBcUMsQ0FBQTtJQUNyQyx3Q0FBdUIsQ0FBQTtJQUN2Qiw0Q0FBMkIsQ0FBQTtJQUMzQixrQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBTEksYUFBYSxLQUFiLGFBQWEsUUFLakI7QUFnQ0QsOERBQThEO0FBQzlELFNBQXdCLGVBQWUsQ0FBQyxRQUEwQjtJQUNoRSxNQUFlLFNBQVM7UUFNdEIsWUFBbUIsVUFBOEIsRUFBRSxNQUFjO1lBTHpELGdCQUFXLEdBQXlCLEVBQUUsQ0FBQztZQU03QyxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDeEIsQ0FBQztRQUVNLGlCQUFpQixDQUFDLGVBQXlCO1lBQ2hELEtBQUssTUFBTSxjQUFjLElBQUksZUFBZSxFQUFFO2dCQUM1QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDdkM7UUFDSCxDQUFDO1FBRU0sZ0JBQWdCLENBQUMsY0FBc0I7WUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7Z0JBQ3BCLElBQUksRUFBRSxhQUFhLENBQUMsZ0JBQWdCO2dCQUNwQyxjQUFjO2FBQ2YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVNLFNBQVMsQ0FDZCxjQUFzQixFQUN0QixTQUFpQixFQUNqQixPQUE0QjtZQUU1QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztnQkFDcEIsSUFBSSxFQUFFLGFBQWEsQ0FBQyxTQUFTO2dCQUM3QixjQUFjO2dCQUNkLFNBQVM7Z0JBQ1QsT0FBTzthQUNSLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFTSxX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
|
|
@@ -4,13 +4,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.proxyHandler = void 0;
|
|
5
5
|
exports.proxyHandler = {
|
|
6
6
|
get(target, prop) {
|
|
7
|
-
if (
|
|
7
|
+
if (target[prop] !== undefined) {
|
|
8
8
|
return Reflect.get(target, prop);
|
|
9
9
|
}
|
|
10
10
|
return Reflect.get(target.$attributes, prop);
|
|
11
11
|
},
|
|
12
12
|
set(target, prop, value) {
|
|
13
|
-
if (
|
|
13
|
+
if (target[prop] !== undefined) {
|
|
14
14
|
return Reflect.set(target, prop, value);
|
|
15
15
|
}
|
|
16
16
|
return Reflect.set(target.$attributes, prop, value);
|
|
@@ -19,4 +19,4 @@ exports.proxyHandler = {
|
|
|
19
19
|
throw new Error('Getting model keys is disallowed. If you want to use object spread on the current data, do { ...model.$attributes }');
|
|
20
20
|
},
|
|
21
21
|
};
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHlIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL01vZGVsL3Byb3h5SGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsdURBQXVEOzs7QUFFMUMsUUFBQSxZQUFZLEdBQXNCO0lBQzdDLEdBQUcsQ0FBQyxNQUFXLEVBQUUsSUFBcUI7UUFDcEMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFO1lBQzlCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDbEM7UUFDRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBQ0QsR0FBRyxDQUFDLE1BQVcsRUFBRSxJQUFxQixFQUFFLEtBQVU7UUFDaEQsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFO1lBQzlCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3pDO1FBQ0QsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRCxPQUFPO1FBQ0wsTUFBTSxJQUFJLEtBQUssQ0FDYixxSEFBcUgsQ0FDdEgsQ0FBQztJQUNKLENBQUM7Q0FDRixDQUFDIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zakodium/adonis-mongodb",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"description": "MongoDB provider for AdonisJs",
|
|
5
5
|
"main": "./lib/providers/MongodbProvider.js",
|
|
6
6
|
"types": "./lib/adonis-typings/index.d.ts",
|
|
@@ -65,22 +65,22 @@
|
|
|
65
65
|
"@adonisjs/core": "^5.9.0",
|
|
66
66
|
"@adonisjs/logger": "^4.1.5",
|
|
67
67
|
"@poppinss/cliui": "^3.0.5",
|
|
68
|
-
"@types/jest": "^29.
|
|
69
|
-
"@types/lodash": "^4.14.
|
|
68
|
+
"@types/jest": "^29.5.1",
|
|
69
|
+
"@types/lodash": "^4.14.194",
|
|
70
70
|
"@types/pluralize": "0.0.29",
|
|
71
|
-
"eslint": "^8.
|
|
72
|
-
"eslint-config-zakodium": "^7.
|
|
73
|
-
"jest": "^29.
|
|
74
|
-
"prettier": "^2.8.
|
|
75
|
-
"rimraf": "^
|
|
76
|
-
"ts-jest": "^29.0
|
|
77
|
-
"typescript": "^
|
|
71
|
+
"eslint": "^8.40.0",
|
|
72
|
+
"eslint-config-zakodium": "^7.2.0",
|
|
73
|
+
"jest": "^29.5.0",
|
|
74
|
+
"prettier": "^2.8.8",
|
|
75
|
+
"rimraf": "^5.0.0",
|
|
76
|
+
"ts-jest": "^29.1.0",
|
|
77
|
+
"typescript": "^5.0.4"
|
|
78
78
|
},
|
|
79
79
|
"dependencies": {
|
|
80
80
|
"@poppinss/utils": "^5.0.0",
|
|
81
81
|
"cli-table3": "^0.6.3",
|
|
82
82
|
"lodash": "^4.17.21",
|
|
83
|
-
"mongodb": "^5.0
|
|
83
|
+
"mongodb": "^5.5.0",
|
|
84
84
|
"pluralize": "^8.0.0"
|
|
85
85
|
}
|
|
86
86
|
}
|
|
@@ -65,7 +65,7 @@ export class Connection extends EventEmitter implements ConnectionContract {
|
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
private async _ensureDb(): Promise<Db> {
|
|
68
|
-
this.connect();
|
|
68
|
+
void this.connect();
|
|
69
69
|
if (!this.connectPromise) {
|
|
70
70
|
throw new Exception(
|
|
71
71
|
`unexpected MongoDB connection error`,
|
package/src/Migration.ts
CHANGED
|
@@ -55,17 +55,11 @@ export default function createMigration(Database: DatabaseContract): any {
|
|
|
55
55
|
private $operations: MigrationOperation[] = [];
|
|
56
56
|
private $connection: ConnectionContract;
|
|
57
57
|
private $logger: Logger;
|
|
58
|
-
private $session: ClientSession;
|
|
59
58
|
private $collectionList: string[];
|
|
60
59
|
|
|
61
|
-
public constructor(
|
|
62
|
-
connection: string | undefined,
|
|
63
|
-
logger: Logger,
|
|
64
|
-
session: ClientSession,
|
|
65
|
-
) {
|
|
60
|
+
public constructor(connection: string | undefined, logger: Logger) {
|
|
66
61
|
this.$connection = Database.connection(connection);
|
|
67
62
|
this.$logger = logger;
|
|
68
|
-
this.$session = session;
|
|
69
63
|
}
|
|
70
64
|
|
|
71
65
|
public createCollections(collectionNames: string[]): void {
|
|
@@ -114,12 +108,12 @@ export default function createMigration(Database: DatabaseContract): any {
|
|
|
114
108
|
});
|
|
115
109
|
}
|
|
116
110
|
|
|
117
|
-
public async execUp(): Promise<void> {
|
|
111
|
+
public async execUp(session: ClientSession): Promise<void> {
|
|
118
112
|
this.up();
|
|
119
|
-
await this._createCollections();
|
|
120
|
-
await this._dropIndexes();
|
|
121
|
-
await this._createIndexes();
|
|
122
|
-
await this._executeDeferred();
|
|
113
|
+
await this._createCollections(session);
|
|
114
|
+
await this._dropIndexes(session);
|
|
115
|
+
await this._createIndexes(session);
|
|
116
|
+
await this._executeDeferred(session);
|
|
123
117
|
}
|
|
124
118
|
|
|
125
119
|
private async _listCollections() {
|
|
@@ -134,24 +128,24 @@ export default function createMigration(Database: DatabaseContract): any {
|
|
|
134
128
|
return this.$collectionList;
|
|
135
129
|
}
|
|
136
130
|
|
|
137
|
-
private async _createCollections(): Promise<void> {
|
|
131
|
+
private async _createCollections(session: ClientSession): Promise<void> {
|
|
138
132
|
const db = await this.$connection.database();
|
|
139
133
|
for (const op of this.$operations.filter(isCreateCollection)) {
|
|
140
134
|
this.$logger.info(`Creating collection ${op.collectionName}`);
|
|
141
135
|
await db.createCollection(op.collectionName, {
|
|
142
|
-
session
|
|
136
|
+
session,
|
|
143
137
|
});
|
|
144
138
|
}
|
|
145
139
|
}
|
|
146
140
|
|
|
147
|
-
private async _executeDeferred(): Promise<void> {
|
|
141
|
+
private async _executeDeferred(session: ClientSession): Promise<void> {
|
|
148
142
|
const db = await this.$connection.database();
|
|
149
143
|
for (const op of this.$operations.filter(isCustom)) {
|
|
150
|
-
await op.callback(db,
|
|
144
|
+
await op.callback(db, session);
|
|
151
145
|
}
|
|
152
146
|
}
|
|
153
147
|
|
|
154
|
-
private async _dropIndexes(): Promise<void> {
|
|
148
|
+
private async _dropIndexes(session: ClientSession): Promise<void> {
|
|
155
149
|
const db = await this.$connection.database();
|
|
156
150
|
for (const op of this.$operations.filter(isDropIndex)) {
|
|
157
151
|
this.$logger.info(
|
|
@@ -159,11 +153,11 @@ export default function createMigration(Database: DatabaseContract): any {
|
|
|
159
153
|
);
|
|
160
154
|
const collection = db.collection(op.collectionName);
|
|
161
155
|
// Index deletion cannot be done in a transaction.
|
|
162
|
-
await collection.dropIndex(op.indexName, { ...op.options });
|
|
156
|
+
await collection.dropIndex(op.indexName, { ...op.options, session });
|
|
163
157
|
}
|
|
164
158
|
}
|
|
165
159
|
|
|
166
|
-
private async _createIndexes(): Promise<void> {
|
|
160
|
+
private async _createIndexes(session: ClientSession): Promise<void> {
|
|
167
161
|
const db = await this.$connection.database();
|
|
168
162
|
const collections = await this._listCollections();
|
|
169
163
|
for (const op of this.$operations.filter(isCreateIndex)) {
|
|
@@ -173,12 +167,13 @@ export default function createMigration(Database: DatabaseContract): any {
|
|
|
173
167
|
// Index creation will fail if collection pre-exists the transaction.
|
|
174
168
|
session: collections.includes(op.collectionName)
|
|
175
169
|
? undefined
|
|
176
|
-
:
|
|
170
|
+
: session,
|
|
177
171
|
});
|
|
178
172
|
}
|
|
179
173
|
}
|
|
180
174
|
|
|
181
175
|
public abstract up(): void;
|
|
176
|
+
public afterUpSuccess?(): void;
|
|
182
177
|
}
|
|
183
178
|
|
|
184
179
|
return Migration;
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
export const proxyHandler: ProxyHandler<any> = {
|
|
4
4
|
get(target: any, prop: string | symbol) {
|
|
5
|
-
if (
|
|
5
|
+
if (target[prop] !== undefined) {
|
|
6
6
|
return Reflect.get(target, prop);
|
|
7
7
|
}
|
|
8
8
|
return Reflect.get(target.$attributes, prop);
|
|
9
9
|
},
|
|
10
10
|
set(target: any, prop: string | symbol, value: any) {
|
|
11
|
-
if (
|
|
11
|
+
if (target[prop] !== undefined) {
|
|
12
12
|
return Reflect.set(target, prop, value);
|
|
13
13
|
}
|
|
14
14
|
return Reflect.set(target.$attributes, prop, value);
|