From 909d3a4f5186fd3790a4dd6f7e9e4fb259d44a0c Mon Sep 17 00:00:00 2001 From: Michal Orlik Date: Tue, 9 Nov 2021 10:24:18 +0100 Subject: [PATCH] fix: add migration alerts to media --- .../1635599216113-renameAlertsToMedia.ts | 35 +++++++++++++++++++ .../1635599216113-renameAlertsToMedia.ts | 32 +++++++++++++++++ .../1635599216113-renameAlertsToMedia.ts | 35 +++++++++++++++++++ 3 files changed, 102 insertions(+) create mode 100644 src/database/migration/mysql/14.0.x/1635599216113-renameAlertsToMedia.ts create mode 100644 src/database/migration/postgres/14.0.x/1635599216113-renameAlertsToMedia.ts create mode 100644 src/database/migration/sqlite/14.0.x/1635599216113-renameAlertsToMedia.ts diff --git a/src/database/migration/mysql/14.0.x/1635599216113-renameAlertsToMedia.ts b/src/database/migration/mysql/14.0.x/1635599216113-renameAlertsToMedia.ts new file mode 100644 index 00000000000..0d438b084b8 --- /dev/null +++ b/src/database/migration/mysql/14.0.x/1635599216113-renameAlertsToMedia.ts @@ -0,0 +1,35 @@ +import { defaultsDeep } from 'lodash'; +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class renameAlertsToMedia1635599216113 implements MigrationInterface { + name = 'renameAlertsToMedia1635599216111'; + + public async up(queryRunner: QueryRunner): Promise { + const items = await queryRunner.query('SELECT * FROM overlay_mapper', undefined); + for (const item of items) { + let opts: Record = {}; + if (item.opts) { + opts = JSON.parse(item.opts); + } + if(['alerts'].includes(item.value)) { + opts = defaultsDeep(opts ?? {}, { + galleryCache: false, + galleryCacheLimitInMb: 50, + }); + item.value = 'media'; + } + const keys = Object.keys(item); + item.opts = JSON.stringify(opts); + await queryRunner.query('DELETE FROM `overlay_mapper` WHERE `id`=?', [item.id]); + await queryRunner.query( + `INSERT INTO \`overlay_mapper\`(${keys.map(o => `\`${o}\``).join(', ')}) values (${keys.map(o => `?`).join(', ')})`, + [keys.map(key => item[key])], + ); + } + } + + public async down(queryRunner: QueryRunner): Promise { + return; + } + +} diff --git a/src/database/migration/postgres/14.0.x/1635599216113-renameAlertsToMedia.ts b/src/database/migration/postgres/14.0.x/1635599216113-renameAlertsToMedia.ts new file mode 100644 index 00000000000..5b299a54f16 --- /dev/null +++ b/src/database/migration/postgres/14.0.x/1635599216113-renameAlertsToMedia.ts @@ -0,0 +1,32 @@ +import { defaultsDeep } from 'lodash'; +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class renameAlertsToMedia1635599216113 implements MigrationInterface { + name = 'renameAlertsToMedia1635599216111'; + + public async up(queryRunner: QueryRunner): Promise { + const items = await queryRunner.query('SELECT * FROM overlay_mapper', undefined); + for (const item of items) { + let opts: Record = {}; + if (item.opts) { + opts = JSON.parse(item.opts); + } + if(['alerts'].includes(item.value)) { + opts = defaultsDeep(opts ?? {}, { + galleryCache: false, + galleryCacheLimitInMb: 50, + }); + item.value = 'media'; + } + const keys = Object.keys(item); + item.opts = JSON.stringify(opts); + await queryRunner.query('DELETE FROM "overlay_mapper" WHERE "id"=\'' + item.id + '\''); + await queryRunner.query(`INSERT INTO "overlay_mapper"(${keys.map(o => `${o}`).join(', ')}) values (${keys.map(o => `'${item[o]}'`).join(', ')})`); + } + } + + public async down(queryRunner: QueryRunner): Promise { + return; + } + +} diff --git a/src/database/migration/sqlite/14.0.x/1635599216113-renameAlertsToMedia.ts b/src/database/migration/sqlite/14.0.x/1635599216113-renameAlertsToMedia.ts new file mode 100644 index 00000000000..952abffcd1b --- /dev/null +++ b/src/database/migration/sqlite/14.0.x/1635599216113-renameAlertsToMedia.ts @@ -0,0 +1,35 @@ +import { defaultsDeep } from 'lodash'; +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class renameAlertsToMedia1635599216113 implements MigrationInterface { + name = 'renameAlertsToMedia1635599216111'; + + public async up(queryRunner: QueryRunner): Promise { + const items = await queryRunner.query('SELECT * FROM overlay_mapper', undefined); + for (const item of items) { + let opts: Record = {}; + if (item.opts) { + opts = JSON.parse(item.opts); + } + if(['alerts'].includes(item.value)) { + opts = defaultsDeep(opts ?? {}, { + galleryCache: false, + galleryCacheLimitInMb: 50, + }); + item.value = 'media'; + } + const keys = Object.keys(item); + item.opts = JSON.stringify(opts); + await queryRunner.query('DELETE FROM "overlay_mapper" WHERE "id"=?', [item.id]); + await queryRunner.query( + `INSERT INTO "overlay_mapper"(${keys.map(o => `"${o}"`).join(', ')}) values (${keys.map(o => `?`).join(', ')})`, + [keys.map(key => item[key])], + ); + } + } + + public async down(queryRunner: QueryRunner): Promise { + return; + } + +}