Syncing alert stash with manticore.
This commit is contained in:
parent
db1b72f95f
commit
6339a253c0
|
@ -0,0 +1,28 @@
|
|||
exports.up = async (knex) => {
|
||||
await knex.schema.alterTable('alerts', (table) => {
|
||||
table.boolean('all_actors')
|
||||
.notNullable()
|
||||
.defaultTo(true);
|
||||
|
||||
table.boolean('all_entities')
|
||||
.notNullable()
|
||||
.defaultTo(true);
|
||||
|
||||
table.boolean('all_tags')
|
||||
.notNullable()
|
||||
.defaultTo(true);
|
||||
|
||||
table.boolean('all_matches')
|
||||
.notNullable()
|
||||
.defaultTo(true);
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = async (knex) => {
|
||||
await knex.schema.alterTable('alerts', (table) => {
|
||||
table.dropColumn('all_actors');
|
||||
table.dropColumn('all_entities');
|
||||
table.dropColumn('all_tags');
|
||||
table.dropColumn('all_matches');
|
||||
});
|
||||
};
|
|
@ -441,6 +441,10 @@ const tags = [
|
|||
description: 'Shoving a cock down your throat during a [blowjob](/tag/blowjob) or [facefuck](/tag/facefucking), giving them a tight sensation while showing off your skills. Without practice, a cock hitting the back of your mouth will likely make you [gag](/tag/gagging).',
|
||||
group: 'oral',
|
||||
},
|
||||
{
|
||||
name: 'dirty talk',
|
||||
slug: 'dirty-talk',
|
||||
},
|
||||
{
|
||||
name: 'double penetration',
|
||||
slug: 'dp',
|
||||
|
@ -726,6 +730,11 @@ const tags = [
|
|||
name: 'live',
|
||||
slug: 'live',
|
||||
},
|
||||
{
|
||||
name: 'living room',
|
||||
slug: 'living-room',
|
||||
group: 'location',
|
||||
},
|
||||
{
|
||||
name: 'maid',
|
||||
slug: 'maid',
|
||||
|
@ -828,6 +837,11 @@ const tags = [
|
|||
slug: 'outdoors',
|
||||
group: 'location',
|
||||
},
|
||||
{
|
||||
name: 'indoors',
|
||||
slug: 'indoors',
|
||||
group: 'location',
|
||||
},
|
||||
{
|
||||
name: 'outie pussy',
|
||||
slug: 'outie-pussy',
|
||||
|
@ -1201,6 +1215,14 @@ const tags = [
|
|||
name: 'hijab',
|
||||
slug: 'hijab',
|
||||
},
|
||||
{
|
||||
name: 'straight',
|
||||
slug: 'straight',
|
||||
},
|
||||
{
|
||||
name: 'real orgasm',
|
||||
slug: 'real-orgasm',
|
||||
},
|
||||
];
|
||||
|
||||
const aliases = [
|
||||
|
@ -1993,6 +2015,10 @@ const aliases = [
|
|||
name: 'point-of-view',
|
||||
for: 'pov',
|
||||
},
|
||||
{
|
||||
name: 'p.o.v.',
|
||||
for: 'pov',
|
||||
},
|
||||
{
|
||||
name: 'prolapse',
|
||||
for: 'anal-prolapse',
|
||||
|
@ -2449,6 +2475,22 @@ const aliases = [
|
|||
name: 'cheat',
|
||||
for: 'cheating',
|
||||
},
|
||||
{
|
||||
name: 'straight porn',
|
||||
for: 'straight',
|
||||
},
|
||||
{
|
||||
name: 'anal masturbation',
|
||||
for: 'anal-fingering',
|
||||
},
|
||||
{
|
||||
name: 'indoor',
|
||||
for: 'indoors',
|
||||
},
|
||||
{
|
||||
name: 'outdoor',
|
||||
for: 'outdoors',
|
||||
},
|
||||
];
|
||||
|
||||
const priorities = [ // higher index is higher priority
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
const escapeRegexp = require('escape-string-regexp');
|
||||
|
||||
const knex = require('./knex');
|
||||
const { indexApi } = require('./manticore');
|
||||
const bulkInsert = require('./utils/bulk-insert');
|
||||
const { HttpError } = require('./errors');
|
||||
|
||||
|
@ -203,16 +204,45 @@ async function notify(scenes) {
|
|||
scene_id: trigger.sceneId,
|
||||
}));
|
||||
|
||||
const stashes = Object.values(Object.fromEntries(triggers.flatMap((trigger) => trigger.alert.stashes.map((stashId) => ({
|
||||
scene_id: trigger.sceneId,
|
||||
stash_id: stashId,
|
||||
const uniqueStashes = Object.values(Object.fromEntries(triggers.flatMap((trigger) => trigger.alert.stashes.map((stashId) => ({
|
||||
sceneId: trigger.sceneId,
|
||||
stashId,
|
||||
userId: trigger.alert.userId,
|
||||
}))).map((stash) => [`${stash.stash_id}:${stash.scene_id}`, stash])));
|
||||
|
||||
await Promise.all([
|
||||
const stashEntries = uniqueStashes.map((stash) => ({
|
||||
scene_id: stash.sceneId,
|
||||
stash_id: stash.stashId,
|
||||
}));
|
||||
|
||||
const [stashed] = await Promise.all([
|
||||
bulkInsert('stashes_scenes', stashEntries, false),
|
||||
bulkInsert('notifications', notifications, false),
|
||||
bulkInsert('stashes_scenes', stashes, false),
|
||||
]);
|
||||
|
||||
// we need created_at from the databased, but user_id is not returned. it's easier to query it than to try and merge it with the input data
|
||||
const stashedEntries = await knex('stashes_scenes')
|
||||
.select('stashes_scenes.*', 'stashes.user_id')
|
||||
.leftJoin('stashes', 'stashes.id', 'stashes_scenes.stash_id')
|
||||
.whereIn('stashes_scenes.id', stashed.map((stash) => stash.id));
|
||||
|
||||
const docs = stashedEntries.map((stash) => ({
|
||||
replace: {
|
||||
index: 'scenes_stashed',
|
||||
id: stash.id,
|
||||
doc: {
|
||||
scene_id: stash.scene_id,
|
||||
user_id: stash.user_id,
|
||||
stash_id: stash.stash_id,
|
||||
created_at: Math.round(stash.created_at.getTime() / 1000),
|
||||
},
|
||||
},
|
||||
}));
|
||||
|
||||
if (docs.length > 0) {
|
||||
await indexApi.bulk(docs.map((doc) => JSON.stringify(doc)).join('\n'));
|
||||
}
|
||||
|
||||
return triggers;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue