From fe74e8328265c5c99c64f64e384fae3a5ebae9ec Mon Sep 17 00:00:00 2001 From: DebaucheryLibrarian Date: Mon, 13 Jul 2026 17:30:23 +0200 Subject: [PATCH] Added notification and alert expiry migration. --- migrations/20260713052703_scene_alerts.js | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/migrations/20260713052703_scene_alerts.js b/migrations/20260713052703_scene_alerts.js index 9ecf09ef..0e93eb04 100644 --- a/migrations/20260713052703_scene_alerts.js +++ b/migrations/20260713052703_scene_alerts.js @@ -1,4 +1,14 @@ exports.up = async function(knex) { + await knex.schema.alterTable('notifications', (table) => { + table.datetime('seen_at'); + }); + + await knex.schema.alterTable('alerts', (table) => { + table.boolean('is_expired') + .notNullable() + .defaultTo(false); + }); + await knex.schema.createMaterializedView('alerts_users_scenes', (view) => { view.columns('user_id', 'scene_id', 'alert_ids'); @@ -19,11 +29,20 @@ exports.up = async function(knex) { .on('related_scenes.alert_id', 'alerts_scenes.alert_id') .on('related_scenes.scene_id', '!=', 'alerts_scenes.scene_id'); }) + .where('alerts.is_expired', false) .groupBy(['user_id', 'alerts_scenes.scene_id', 'is_only']), ); }); }; exports.down = async function(knex) { - await knex.schema.dropView('alerts_users_scenes'); + await knex.schema.dropMaterializedView('alerts_users_scenes'); + + await knex.schema.alterTable('alerts', (table) => { + table.dropColumn('is_expired'); + }); + + await knex.schema.alterTable('notifications', (table) => { + table.dropColumn('seen_at'); + }); };