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)
|
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');
|
||||||
}))
|
}))
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Reference in New Issue