@warlock.js/cascade
Version:
ORM for managing databases
56 lines (55 loc) • 1.75 kB
JavaScript
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