@veramo/data-store
Version:
Veramo data storage plugin based on TypeORM database drivers
69 lines • 3.56 kB
JavaScript
import { Presentation } from '../index.js';
import Debug from 'debug';
import { migrationGetExistingTableByName } from './migration-functions.js';
const debug = Debug('veramo:data-store:migrate-presentation-issuance-date');
/**
* Reduce issuanceDate constraint of Presentations.
*
* @public
*/
export class AllowNullIssuanceDateForPresentations1637237492913 {
name = 'AllowNullIssuanceDateForPresentations1637237492913'; // Used in case this class gets minified, which would change the classname
async up(queryRunner) {
if (queryRunner.connection.driver.options.type === 'sqlite') {
debug(`splitting migration into multiple transactions to allow sqlite table updates`);
await queryRunner.commitTransaction();
debug(`turning off foreign keys`);
await queryRunner.query('PRAGMA foreign_keys=off');
await queryRunner.startTransaction();
}
// update issuanceDate column
const table = migrationGetExistingTableByName(queryRunner, 'presentation');
const oldColumn = table?.findColumnByName('issuanceDate');
const newColumn = oldColumn.clone();
newColumn.isNullable = true;
debug(`updating issuanceDate for presentations to allow null`);
await queryRunner.changeColumn(table, oldColumn, newColumn);
debug(`updated issuanceDate for presentations to allow null`);
if (queryRunner.connection.driver.options.type === 'sqlite') {
debug(`splitting migration into multiple transactions to allow sqlite table updates`);
await queryRunner.commitTransaction();
debug(`turning on foreign keys`);
await queryRunner.query('PRAGMA foreign_keys=on');
await queryRunner.startTransaction();
}
}
async down(queryRunner) {
if (queryRunner.connection.driver.options.type === 'sqlite') {
debug(`splitting migration into multiple transactions to allow sqlite table updates`);
await queryRunner.commitTransaction();
debug(`turning off foreign keys`);
await queryRunner.query('PRAGMA foreign_keys=off');
await queryRunner.startTransaction();
}
const table = migrationGetExistingTableByName(queryRunner, 'presentation');
debug(`DOWN update NULL 'issuanceDate' with FAKE data for '${table.name}' table`);
await queryRunner.manager
.createQueryBuilder()
.update(Presentation)
.set({ issuanceDate: new Date(0) })
.where('issuanceDate is NULL')
.execute();
// update issuanceDate column
const oldColumn = table?.findColumnByName('issuanceDate');
const newColumn = oldColumn.clone();
newColumn.isNullable = false;
debug(`updating issuanceDate for presentations to NOT allow null`);
await queryRunner.changeColumn(table, oldColumn, newColumn);
debug(`updated issuanceDate for presentations to NOT allow null`);
if (queryRunner.connection.driver.options.type === 'sqlite') {
debug(`splitting migration into multiple transactions to allow sqlite table updates`);
await queryRunner.commitTransaction();
debug(`turning on foreign keys`);
await queryRunner.query('PRAGMA foreign_keys=on');
await queryRunner.startTransaction();
}
debug(`DOWN updated issuanceDate for presentations to NOT allow null`);
}
}
//# sourceMappingURL=4.allowNullVPIssuanceDate.js.map