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) table.text('media_id', 21)
.notNullable() .notNullable()
.references('id') .references('id')
.inTable('media'); .inTable('media')
.onDelete('cascade');
table.unique('movie_id'); table.unique('movie_id');
})) }))

View File

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

View File

@ -130,6 +130,28 @@ function html(context, selector) {
return el && el.innerHTML; 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) { function htmls(context, selector) {
const els = all(context, selector, null, true); const els = all(context, selector, null, true);
@ -402,6 +424,8 @@ const quFuncs = {
images, images,
img: image, img: image,
imgs: images, imgs: images,
json,
jsons,
length: duration, length: duration,
meta, meta,
num: number, num: number,