| 
														
															@@ -6,11 +6,14 @@ import mongoose, { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	MongooseDistinctQueryMiddleware, 
														 | 
														
														 | 
														
															 	MongooseDistinctQueryMiddleware, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	MongooseQueryOrDocumentMiddleware 
														 | 
														
														 | 
														
															 	MongooseQueryOrDocumentMiddleware 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } from "mongoose"; 
														 | 
														
														 | 
														
															 } from "mongoose"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import { readdir } from "fs/promises"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import path from "path"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import JobContext from "../JobContext"; 
														 | 
														
														 | 
														
															 import JobContext from "../JobContext"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import BaseModule, { ModuleStatus } from "../BaseModule"; 
														 | 
														
														 | 
														
															 import BaseModule, { ModuleStatus } from "../BaseModule"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import { UniqueMethods } from "../types/Modules"; 
														 | 
														
														 | 
														
															 import { UniqueMethods } from "../types/Modules"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import { Models, Schemas } from "../types/Models"; 
														 | 
														
														 | 
														
															 import { Models, Schemas } from "../types/Models"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import getDataPlugin from "../schemas/plugins/getData"; 
														 | 
														
														 | 
														
															 import getDataPlugin from "../schemas/plugins/getData"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import Migration from "../Migration"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 export default class DataModule extends BaseModule { 
														 | 
														
														 | 
														
															 export default class DataModule extends BaseModule { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	private models?: Models; 
														 | 
														
														 | 
														
															 	private models?: Models; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -56,6 +59,8 @@ export default class DataModule extends BaseModule { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			tags: ["useGetDataPlugin"] 
														 | 
														
														 | 
														
															 			tags: ["useGetDataPlugin"] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		}); 
														 | 
														
														 | 
														
															 		}); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		await this.runMigrations(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		await this.loadModels(); 
														 | 
														
														 | 
														
															 		await this.loadModels(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		await this.syncModelIndexes(); 
														 | 
														
														 | 
														
															 		await this.syncModelIndexes(); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -188,6 +193,32 @@ export default class DataModule extends BaseModule { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		return this.models[name]; 
														 | 
														
														 | 
														
															 		return this.models[name]; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	} 
														 | 
														
														 | 
														
															 	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	private async loadMigrations() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		if (!this.mongoConnection) throw new Error("Mongo is not available"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		const migrations = await readdir( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			path.resolve(__dirname, "../schemas/migrations/") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		return Promise.all( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			migrations.map(async migrationFile => { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				const { default: Migrate }: { default: typeof Migration } = 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+					await import(`../schemas/migrations/${migrationFile}`); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				return new Migrate(this.mongoConnection as Connection); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			}) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	private async runMigrations() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		const migrations = await this.loadMigrations(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		for (let i = 0; i < migrations.length; i += 1) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			const migration = migrations[i]; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			// eslint-disable-next-line no-await-in-loop 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			await migration.up(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 export type DataModuleJobs = { 
														 | 
														
														 | 
														
															 export type DataModuleJobs = { 
														 |