import { MigrationInterface, QueryRunner, Table } from "typeorm"; import BackupHelper from "../helpers/backupHelper"; import { getDefaultByORM, getTypeByORM, isIncrementPrimary } from "./ormHelper"; import InternalException from "../exceptions/internalException"; import { DB_TYPE } from "../env.defaults"; export class BackupAndResetDatabase1738166124200 implements MigrationInterface { name = "BackupAndResetDatabase1738166124200"; public async up(queryRunner: QueryRunner): Promise { let query = DB_TYPE == "postgres" ? "SELECT name FROM migrations" : "SELECT `name` FROM `migrations`"; let migrations = await queryRunner.query(query); if ( (await queryRunner.hasTable("user")) && migrations.findIndex((m: any) => m.name == "MoveSendNewsletterFlag1737816852011") == -1 ) { throw new InternalException( "Cannot update due to skiped version. Update to v1.2.2 Version first to prevent data loss and get access to the newer Versions." ); } if (await queryRunner.hasTable("user")) { await BackupHelper.createBackup({ collectIds: false }); } await queryRunner.clearDatabase(); await queryRunner.createTable( new Table({ name: "migrations", columns: [ { name: "id", ...getTypeByORM("int"), ...isIncrementPrimary }, { name: "timestamp", ...getTypeByORM("bigint") }, { name: "name", ...getTypeByORM("varchar") }, ], }), true ); await queryRunner.createTable( new Table({ name: "typeorm_metadata", columns: [ { name: "type", ...getTypeByORM("varchar") }, { name: "database", ...getTypeByORM("varchar", true), default: getDefaultByORM("null") }, { name: "schema", ...getTypeByORM("varchar", true), default: getDefaultByORM("null") }, { name: "table", ...getTypeByORM("varchar", true), default: getDefaultByORM("null") }, { name: "name", ...getTypeByORM("varchar", true), default: getDefaultByORM("null") }, { name: "value", ...getTypeByORM("text", true), default: getDefaultByORM("null") }, ], }), true ); } public async down(queryRunner: QueryRunner): Promise {} }