-
+
+
+
+
+ Found {{ actorTotal }} {{ actorTotal > 1 ? 'actors' : 'actor' }}
+
+ Full actor results
+
+
+
+
+
+
+
+ Found {{ movieTotal }} {{ movieTotal > 1 ? 'movies' : 'movie' }}
+
+ Full movie results
+
+
+
+
+
+
+
+
+ Found {{ sceneTotal }} {{ sceneTotal > 1 ? 'scenes' : 'scene' }}
+
+ Full scene results
+
+
+
+
+
+
+
+
No results for '{{ query }}'
+
+
diff --git a/pages/search/+onBeforeRender.js b/pages/search/+onBeforeRender.js
index 95120af..86c5386 100644
--- a/pages/search/+onBeforeRender.js
+++ b/pages/search/+onBeforeRender.js
@@ -1,36 +1,66 @@
import { fetchScenes } from '#/src/scenes.js';
+import { fetchActors } from '#/src/actors.js';
+import { fetchMovies } from '#/src/movies.js';
import { curateScenesQuery } from '#/src/web/scenes.js';
+import { curateActorsQuery } from '#/src/web/actors.js';
+import { curateMoviesQuery } from '#/src/web/movies.js';
export async function onBeforeRender(pageContext) {
- const searchScenes = await fetchScenes(await curateScenesQuery({
- ...pageContext.urlQuery,
- query: pageContext.urlParsed.search.q,
- scope: pageContext.urlParsed.search.scope || 'results',
- tagFilter: pageContext.tagFilter,
- }), {
- page: Number(pageContext.routeParams.page) || 1,
- limit: Number(pageContext.urlParsed.search.limit) || 30,
- }, pageContext.user);
+ const [searchScenes, searchActors, searchMovies] = await Promise.all([
+ fetchScenes(await curateScenesQuery({
+ ...pageContext.urlQuery,
+ query: pageContext.urlParsed.search.q,
+ scope: pageContext.urlParsed.search.scope || 'results',
+ tagFilter: pageContext.tagFilter,
+ }), {
+ page: Number(pageContext.routeParams.page) || 1,
+ limit: Number(pageContext.urlParsed.search.limit) || 15,
+ }, pageContext.user),
+ fetchActors(curateActorsQuery(pageContext.urlQuery), {
+ page: Number(pageContext.routeParams.page) || 1,
+ limit: Number(pageContext.urlParsed.search.limit) || 10,
+ order: ['results', 'desc'],
+ }, pageContext.user),
+ fetchMovies(await curateMoviesQuery({
+ ...pageContext.urlQuery,
+ scope: pageContext.routeParams.scope || 'results',
+ }), {
+ page: Number(pageContext.routeParams.page) || 1,
+ limit: Number(pageContext.urlParsed.search.limit) || 5,
+ }, pageContext.user),
+ ]);
const {
scenes,
aggActors,
aggTags,
aggChannels,
- total,
- limit,
+ total: sceneTotal,
} = searchScenes;
+ const {
+ actors,
+ total: actorTotal,
+ } = searchActors;
+
+ const {
+ movies,
+ total: movieTotal,
+ } = searchMovies;
+
return {
pageContext: {
title: `Search '${pageContext.urlParsed.search.q || ''}'`,
pageProps: {
+ actors,
scenes,
+ movies,
aggActors,
aggTags,
aggChannels,
- limit,
- total,
+ sceneTotal,
+ actorTotal,
+ movieTotal,
},
},
};
diff --git a/pages/updates/+Page.vue b/pages/updates/+Page.vue
index 143af65..d4bfda4 100644
--- a/pages/updates/+Page.vue
+++ b/pages/updates/+Page.vue
@@ -1,13 +1,18 @@
diff --git a/pages/updates/+onBeforeRender.js b/pages/updates/+onBeforeRender.js
index 3fa1300..d437bb2 100644
--- a/pages/updates/+onBeforeRender.js
+++ b/pages/updates/+onBeforeRender.js
@@ -2,15 +2,24 @@ import { fetchScenes } from '#/src/scenes.js';
import { curateScenesQuery } from '#/src/web/scenes.js';
export async function onBeforeRender(pageContext) {
- const { scenes, limit, total } = await fetchScenes(await curateScenesQuery({
+ const withQuery = Object.hasOwn(pageContext.urlParsed.search, 'q');
+
+ const {
+ scenes,
+ aggTags,
+ aggChannels,
+ aggActors,
+ limit,
+ total,
+ } = await fetchScenes(await curateScenesQuery({
...pageContext.urlQuery,
scope: pageContext.routeParams.scope || 'latest',
- isShowcased: true,
+ isShowcased: withQuery ? null : true,
tagFilter: pageContext.tagFilter,
}), {
page: Number(pageContext.routeParams.page) || 1,
limit: Number(pageContext.urlParsed.search.limit) || 30,
- aggregate: false,
+ aggregate: withQuery,
}, pageContext.user);
return {
@@ -18,6 +27,9 @@ export async function onBeforeRender(pageContext) {
title: pageContext.routeParams.scope,
pageProps: {
scenes,
+ aggTags,
+ aggChannels,
+ aggActors,
limit,
total,
},
diff --git a/src/actors.js b/src/actors.js
index 65d681f..b296c82 100644
--- a/src/actors.js
+++ b/src/actors.js
@@ -446,6 +446,7 @@ async function queryManticoreSql(filters, options, _reqUser) {
} else if (options.order?.[0] === 'results') {
builder.orderBy([
{ column: '_score', order: options.order[1] },
+ { column: 'actors.stashed', order: 'desc' },
{ column: 'actors.slug', order: 'asc' },
]);
} else if (options.order?.[0] === 'stashed' && filters.stashId) {
diff --git a/src/movies.js b/src/movies.js
index 28cd8a3..7d10f16 100644
--- a/src/movies.js
+++ b/src/movies.js
@@ -433,6 +433,7 @@ async function queryManticoreSql(filters, options) {
} else if (filters.scope === 'results') {
builder.orderBy([
{ column: '_score', order: 'desc' },
+ { column: 'movies.stashed', order: 'desc' },
{ column: 'movies.effective_date', order: 'desc' },
]);
} else if (filters.scope === 'stashed' && filters.stashId) {
diff --git a/src/scenes.js b/src/scenes.js
index ee730c6..de9042b 100644
--- a/src/scenes.js
+++ b/src/scenes.js
@@ -533,6 +533,7 @@ async function queryManticoreSql(filters, options, _reqUser) {
} else if (filters.scope === 'results') {
builder.orderBy([
{ column: '_score', order: 'desc' },
+ { column: 'scenes.stashed', order: 'desc' },
{ column: 'scenes.effective_date', order: 'desc' },
]);
} else if (filters.scope === 'stashed' && filters.stashId) {