diff --git a/.gitignore b/.gitignore index 5d5e8d1ba..c39f21bd9 100755 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,8 @@ data/ tmp/* public/js/* public/css/* -public/img/tags/ +public/img/tags +public/img/logos/ config/* !config/default.js assets/js/config/ diff --git a/migrations/20240125011700_manticore.js b/migrations/20240125011700_manticore.js index 8f9dc25ab..a58843168 100644 --- a/migrations/20240125011700_manticore.js +++ b/migrations/20240125011700_manticore.js @@ -24,6 +24,7 @@ const scenesFields = ` tags text, meta text, date timestamp, + is_showcased bool, created_at timestamp, effective_date timestamp, stashed int @@ -72,42 +73,41 @@ const actorsFields = ` `; exports.up = async (knex) => { - await utilsApi.sql(`create table scenes (${scenesFields})`); + try { + await utilsApi.sql(`create table scenes (${scenesFields})`); - /* - await utilsApi.sql(`create table scenes_stashed ( - ${scenesFields}, - user_id int, - stash_id int - )`); - */ + await utilsApi.sql(`create table scenes_stashed ( + scene_id int, + stash_id int, + user_id int, + created_at timestamp + )`); - await utilsApi.sql(`create table scenes_stashed ( - scene_id int, - stash_id int, - user_id int - )`); + await utilsApi.sql(`create table movies (${moviesFields})`); - await utilsApi.sql(`create table movies (${moviesFields})`); + await utilsApi.sql(`create table movies_stashed ( + movie_id int, + stash_id int, + user_id int, + created_at timestamp + )`); - await utilsApi.sql(`create table movies_stashed ( - ${moviesFields}, - user_id int, - stash_id int - )`); + await utilsApi.sql(`create table actors (${actorsFields})`); - await utilsApi.sql(`create table actors (${actorsFields})`); + await utilsApi.sql(`create table actors_stashed ( + actor_id int, + stash_id int, + user_id int, + created_at timestamp + )`); - await utilsApi.sql(`create table actors_stashed ( - ${actorsFields}, - user_id int, - stash_id int - )`); - - await knex.schema.alterTable('stashes_scenes', (table) => table.increments('id')); - await knex.schema.alterTable('stashes_movies', (table) => table.increments('id')); - await knex.schema.alterTable('stashes_actors', (table) => table.increments('id')); - await knex.schema.alterTable('stashes_series', (table) => table.increments('id')); + await knex.schema.alterTable('stashes_scenes', (table) => table.increments('id')); + await knex.schema.alterTable('stashes_movies', (table) => table.increments('id')); + await knex.schema.alterTable('stashes_actors', (table) => table.increments('id')); + await knex.schema.alterTable('stashes_series', (table) => table.increments('id')); + } catch (error) { + console.log(error); + } }; exports.down = async (knex) => { diff --git a/seeds/00_tags.js b/seeds/00_tags.js index 29677f377..e9387e6cd 100755 --- a/seeds/00_tags.js +++ b/seeds/00_tags.js @@ -307,6 +307,10 @@ const tags = [ name: 'casting', slug: 'casting', }, + { + name: 'cheating', + slug: 'cheating', + }, { name: 'cheerleader', slug: 'cheerleader', @@ -2441,6 +2445,10 @@ const aliases = [ for: 'gangbang', implies: ['anal'], }, + { + name: 'cheat', + for: 'cheating', + }, ]; const priorities = [ // higher index is higher priority diff --git a/seeds/02_sites.js b/seeds/02_sites.js index 9b1443f01..6cd8f81dd 100755 --- a/seeds/02_sites.js +++ b/seeds/02_sites.js @@ -7904,6 +7904,13 @@ const sites = [ tags: ['family'], parent: 'nubiles', }, + { + slug: 'cheatingsis', + name: 'Cheating Sis', + url: 'https://www.cheatingsis.com', + tags: ['cheating', 'family'], + parent: 'nubiles', + }, // PASCALS SUBSLUTS { slug: 'pascalssubsluts', diff --git a/src/update-search.js b/src/update-search.js index 64a95f13f..43537bf55 100644 --- a/src/update-search.js +++ b/src/update-search.js @@ -18,7 +18,7 @@ async function updateManticoreStashedScenes(docs) { const sceneIds = docsChunk.map((doc) => doc.replace.id); const stashes = await knex('stashes_scenes') - .select('stashes_scenes.id as stashed_id', 'stashes_scenes.scene_id', 'stashes.id as stash_id', 'stashes.user_id as user_id') + .select('stashes_scenes.id as stashed_id', 'stashes_scenes.scene_id', 'stashes_scenes.created_at', 'stashes.id as stash_id', 'stashes.user_id as user_id') .leftJoin('stashes', 'stashes.id', 'stashes_scenes.stash_id') .whereIn('scene_id', sceneIds); @@ -38,6 +38,7 @@ async function updateManticoreStashedScenes(docs) { scene_id: doc.replace.id, user_id: stash.user_id, stash_id: stash.stash_id, + created_at: Math.round(stash.created_at.getTime() / 1000), }, }, })); @@ -69,11 +70,16 @@ async function updateManticoreSceneSearch(releaseIds) { parents.slug as network_slug, parents.name as network_name, COALESCE(JSON_AGG(DISTINCT (actors.id, actors.name)) FILTER (WHERE actors.id IS NOT NULL), '[]') as actors, - COALESCE(JSON_AGG(DISTINCT (tags.id, tags.name, tags.priority)) FILTER (WHERE tags.id IS NOT NULL), '[]') as tags + COALESCE(JSON_AGG(DISTINCT (tags.id, tags.name, tags.priority)) FILTER (WHERE tags.id IS NOT NULL), '[]') as tags, + studios.showcased IS NOT false + AND (entities.showcased IS NOT false OR COALESCE(studios.showcased, false) = true) + AND (parents.showcased IS NOT false OR COALESCE(entities.showcased, false) = true OR COALESCE(studios.showcased, false) = true) + AS showcased FROM releases LEFT JOIN scenes_meta ON scenes_meta.scene_id = releases.id LEFT JOIN entities ON releases.entity_id = entities.id LEFT JOIN entities AS parents ON parents.id = entities.parent_id + LEFT JOIN entities AS studios ON studios.id = releases.studio_id LEFT JOIN releases_actors AS local_actors ON local_actors.release_id = releases.id LEFT JOIN releases_directors AS local_directors ON local_directors.release_id = releases.id LEFT JOIN releases_tags AS local_tags ON local_tags.release_id = releases.id @@ -93,12 +99,17 @@ async function updateManticoreSceneSearch(releaseIds) { entities.name, entities.slug, entities.alias, + entities.showcased, parents.id, parents.name, parents.slug, - parents.alias; + parents.alias, + parents.showcased, + studios.showcased `, releaseIds && [releaseIds]); + // console.log(scenes.rows); + const docs = scenes.rows.map((scene) => { const flatActors = scene.actors.flatMap((actor) => actor.f2.split(' ')); const flatTags = scene.tags.filter((tag) => tag.f3 > 6).flatMap((tag) => tag.f2.split(' ')); // only make top tags searchable to minimize cluttered results @@ -114,6 +125,7 @@ async function updateManticoreSceneSearch(releaseIds) { date: scene.date ? Math.round(scene.date.getTime() / 1000) : undefined, created_at: Math.round(scene.created_at.getTime() / 1000), effective_date: Math.round((scene.date || scene.created_at).getTime() / 1000), + is_showcased: scene.showcased, shoot_id: scene.shoot_id || undefined, channel_id: scene.channel_id, channel_slug: scene.channel_slug,