Using bulk insert utility for alert notifications to prevent duplicate errors.

This commit is contained in:
DebaucheryLibrarian 2021-06-04 03:10:41 +02:00
parent 011bb4efa3
commit bed329cd8c
3 changed files with 35 additions and 12 deletions

View File

@ -910,7 +910,8 @@ exports.up = knex => Promise.resolve()
table.text('media_id', 21)
.notNullable()
.references('id')
.inTable('media');
.inTable('media')
.onDelete('cascade');
table.unique('movie_id');
}))

View File

@ -1,6 +1,7 @@
'use strict';
const knex = require('./knex');
const bulkInsert = require('./utils/bulk-insert');
const { HttpError } = require('./errors');
async function addAlert(alert, sessionUser) {
@ -21,25 +22,22 @@ async function addAlert(alert, sessionUser) {
.returning('id');
await Promise.all([
alert.actors?.length > 0 && knex('alerts_actors')
.insert(alert.actors.map(actorId => ({
alert.actors?.length > 0 && bulkInsert('alerts_actors', alert.actors.map(actorId => ({
alert_id: alertId,
actor_id: actorId,
}))),
alert.tags?.length > 0 && knex('alerts_tags')
.insert(alert.tags.map(tagId => ({
})), false),
alert.tags?.length > 0 && bulkInsert('alerts_tags', alert.tags.map(tagId => ({
alert_id: alertId,
tag_id: tagId,
}))),
alert.stashes?.length > 0 && knex('alerts_stashes')
.insert(alert.stashes.map(stashId => ({
})), false),
alert.stashes?.length > 0 && bulkInsert('alerts_stashes', alert.stashes.map(stashId => ({
alert_id: alertId,
stash_id: stashId,
}))),
alert.entity && knex('alerts_entities').insert({
})), false),
alert.entity && bulkInsert('alerts_entities', [{
alert_id: alertId,
entity_id: alert.entity,
}),
}], false),
]);
return alertId;

View File

@ -130,6 +130,28 @@ function html(context, selector) {
return el && el.innerHTML;
}
function json(context, selector) {
const el = q(context, selector, null, true);
try {
return JSON.parse(el?.innerHTML);
} catch (error) {
return null;
}
}
function jsons(context, selector) {
const els = all(context, selector, null, true);
return els.map((el) => {
try {
return JSON.parse(el?.innerHTML);
} catch (error) {
return null;
}
});
}
function htmls(context, selector) {
const els = all(context, selector, null, true);
@ -402,6 +424,8 @@ const quFuncs = {
images,
img: image,
imgs: images,
json,
jsons,
length: duration,
meta,
num: number,