48 lines
4.0 KiB
JavaScript
48 lines
4.0 KiB
JavaScript
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||
|
return new (P || (P = Promise))(function (resolve, reject) {
|
||
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||
|
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||
|
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||
|
});
|
||
|
};
|
||
|
import Migration from "../db/Migration";
|
||
|
import { query } from "../db/MysqlConnectionManager";
|
||
|
/**
|
||
|
* Must be the first migration
|
||
|
*/
|
||
|
export default class CreateMigrationsTable extends Migration {
|
||
|
shouldRun(currentVersion) {
|
||
|
const _super = Object.create(null, {
|
||
|
shouldRun: { get: () => super.shouldRun }
|
||
|
});
|
||
|
return __awaiter(this, void 0, void 0, function* () {
|
||
|
try {
|
||
|
yield query('SELECT 1 FROM migrations LIMIT 1');
|
||
|
}
|
||
|
catch (e) {
|
||
|
if (e.code !== 'ER_NO_SUCH_TABLE') {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
return yield _super.shouldRun.call(this, currentVersion);
|
||
|
});
|
||
|
}
|
||
|
install() {
|
||
|
return __awaiter(this, void 0, void 0, function* () {
|
||
|
yield query('CREATE TABLE migrations(' +
|
||
|
'id INT NOT NULL,' +
|
||
|
'name VARCHAR(64) NOT NULL,' +
|
||
|
'migration_date DATE,' +
|
||
|
'PRIMARY KEY (id)' +
|
||
|
')');
|
||
|
});
|
||
|
}
|
||
|
rollback() {
|
||
|
return __awaiter(this, void 0, void 0, function* () {
|
||
|
yield query('DROP TABLE migrations');
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3JlYXRlTWlncmF0aW9uc1RhYmxlLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJtaWdyYXRpb25zL0NyZWF0ZU1pZ3JhdGlvbnNUYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLFNBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUN4QyxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFFbkQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLHFCQUFzQixTQUFRLFNBQVM7SUFDbEQsU0FBUyxDQUFDLGNBQXNCOzs7OztZQUNsQyxJQUFJO2dCQUNBLE1BQU0sS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7YUFDbkQ7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDUixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssa0JBQWtCLEVBQUU7b0JBQy9CLE9BQU8sS0FBSyxDQUFDO2lCQUNoQjthQUNKO1lBRUQsT0FBTyxNQUFNLE9BQU0sU0FBUyxZQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2pELENBQUM7S0FBQTtJQUVLLE9BQU87O1lBQ1QsTUFBTSxLQUFLLENBQUMsMEJBQTBCO2dCQUNsQyxrQkFBa0I7Z0JBQ2xCLDRCQUE0QjtnQkFDNUIsc0JBQXNCO2dCQUN0QixrQkFBa0I7Z0JBQ2xCLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsQ0FBQztLQUFBO0lBRUssUUFBUTs7WUFDVixNQUFNLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7S0FBQTtDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1pZ3JhdGlvbiBmcm9tIFwiLi4vZGIvTWlncmF0aW9uXCI7XG5pbXBvcnQge3F1ZXJ5fSBmcm9tIFwiLi4vZGIvTXlzcWxDb25uZWN0aW9uTWFuYWdlclwiO1xuXG4vKipcbiAqIE11c3QgYmUgdGhlIGZpcnN0IG1pZ3JhdGlvblxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDcmVhdGVNaWdyYXRpb25zVGFibGUgZXh0ZW5kcyBNaWdyYXRpb24ge1xuICAgIGFzeW5jIHNob3VsZFJ1bihjdXJyZW50VmVyc2lvbjogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBxdWVyeSgnU0VMRUNUIDEgRlJPTSBtaWdyYXRpb25zIExJTUlUIDEnKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKGUuY29kZSAhPT0gJ0VSX05PX1NVQ0hfVEFCTEUnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHN1cGVyLnNob3VsZFJ1bihjdXJyZW50VmVyc2lvbik7XG4gICAgfVxuXG4gICAgYXN5bmMgaW5zdGFsbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgcXVlcnkoJ0NSRUFURSBUQUJMRSBtaWdyYXRpb25zKCcgK1xuICAgICAgICAgICAgJ2lkIElOVCBOT1QgTlVMTCwnICtcbiAgICAgICAgICAgICduYW1lIFZBUkNIQVIoNjQpIE5PVCBOVUxMLCcgK1xuICAgICAgICAgICAgJ21pZ3JhdGlvbl9kYXRlIERBVEUsJyArXG4gICAgICAgICAgICAnUFJJTUFSWSBLRVkgKGlkKScgK1xuICAgICAgICAgICAgJyknKTtcbiAgICB9XG5cbiAgICBhc3luYyByb2xsYmFjaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgcXVlcnkoJ0RST1AgVEFCTEUgbWlncmF0aW9ucycpO1xuICAgIH1cbn0iXX0=
|