@smallprod/models
Version:
46 lines (45 loc) • 1.81 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const createtable_1 = __importDefault(require("../migration/types/createtable"));
class MigrationEntity {
}
exports.default = MigrationEntity;
MigrationEntity.getAll = async (model) => {
await MigrationEntity.checkQuery(model);
return model.select('migrations', false, [], [], [
{ attribute: 'migrated_at', mode: 'DESC' },
{ attribute: 'id', mode: 'DESC' },
], 'default_table', -1, -1, [], [], []);
};
MigrationEntity.create = async (model, name) => {
await MigrationEntity.checkQuery(model);
return model.insert('migrations', [{ column: 'name', value: name }]);
};
MigrationEntity.delete = async (model, name) => {
await MigrationEntity.checkQuery(model);
return model.delete('migrations', [
{ column: 'name', operator: '=', value: name },
]);
};
MigrationEntity.reset = () => {
MigrationEntity.canQuery = [];
};
MigrationEntity.canQuery = [];
MigrationEntity.checkQuery = async (model) => {
if (!MigrationEntity.canQuery.includes(model)) {
const res = await model.checkMigrationTable();
if (!res) {
const createMigrationTable = new createtable_1.default('migrations');
createMigrationTable.addField('id', 'bigint').autoIncrement().primary();
createMigrationTable.addField('name', 'varchar').length(255).unique();
createMigrationTable
.addField('migrated_at', 'datetime')
.default('(DATE(CURRENT_TIMESTAMP))', true);
await createMigrationTable.execute(model);
}
MigrationEntity.canQuery.push(model);
}
};