forked from DebaucheryLibrarian/traxxx
Added notification and alert expiry migration.
This commit is contained in:
@@ -1,4 +1,14 @@
|
|||||||
exports.up = async function(knex) {
|
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) => {
|
await knex.schema.createMaterializedView('alerts_users_scenes', (view) => {
|
||||||
view.columns('user_id', 'scene_id', 'alert_ids');
|
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.alert_id', 'alerts_scenes.alert_id')
|
||||||
.on('related_scenes.scene_id', '!=', 'alerts_scenes.scene_id');
|
.on('related_scenes.scene_id', '!=', 'alerts_scenes.scene_id');
|
||||||
})
|
})
|
||||||
|
.where('alerts.is_expired', false)
|
||||||
.groupBy(['user_id', 'alerts_scenes.scene_id', 'is_only']),
|
.groupBy(['user_id', 'alerts_scenes.scene_id', 'is_only']),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.down = async function(knex) {
|
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');
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user