UNPKG

@warlock.js/cascade

Version:

ORM for managing databases

56 lines (55 loc) 1.75 kB
import {colors}from'@mongez/copper';import {Model}from'../model/model.js';import {query}from'../query/query.js';class MigrationOfficer { /** * Master Mind Collection name */ collection = "migrations"; /** * Connection Instance */ query = query; /** * Check if the given migration name is already migrated */ async isMigrated(migrationName) { const migrationDocument = await this.query.first(this.collection, { name: migrationName, }); return !!migrationDocument; } /** * Migrate the given migration name */ async migrate(migrationName) { const collectionName = this.collection; class Migration extends Model { static collection = collectionName; } await Migration.create({ name: migrationName, createdAt: new Date(), }); } /** * Drop all migrations */ async drop() { console.log(colors.blue("→"), colors.cyan("[migration]"), colors.redBright("Dropping"), "all migrations"); await this.query.delete(this.collection); console.log(colors.green("✓"), colors.cyan("[migration]"), "All migrations has been " + colors.greenBright("dropped successfully.")); } /** * Drop the given migration name */ async dropMigration(migrationName) { await this.query.delete(this.collection, { name: migrationName, }); } /** * Get migrations list */ async list() { return await this.query.list(this.collection); } } const migrationOfficer = new MigrationOfficer();export{MigrationOfficer,migrationOfficer};//# sourceMappingURL=migration-officer.js.map