forked from DebaucheryLibrarian/traxxx
Using bulk insert utility for alert notifications to prevent duplicate errors.
This commit is contained in:
parent
011bb4efa3
commit
bed329cd8c
|
@ -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');
|
||||
}))
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue