diff --git a/components/filters/tags.vue b/components/filters/tags.vue
index 525c306..5c88926 100644
--- a/components/filters/tags.vue
+++ b/components/filters/tags.vue
@@ -12,25 +12,25 @@
-
+
+
+
+
new RegExp(search.value, 'i'));
const order = ref('priority');
-// const showActorTags = ref(true);
+const showActorTags = ref(!!pageActor);
const priorityTags = [
'anal',
@@ -173,13 +177,13 @@ const priorityTags = [
'lesbian',
];
+const isActorTagsAvailable = computed(() => props.actorTags && (props.filters.actors.length > 0 || pageActor) && !pageStash);
+
const groupedTags = computed(() => {
- /*
- const tags = showActorTags.value && props.actorTags && (props.filters.actors.length > 0 || pageActor)
+ // can't show actor tags inside stash, because both require a join, and manticore currently only supports one
+ const tags = showActorTags.value && isActorTagsAvailable.value
? props.actorTags
: props.tags;
- */
- const tags = props.tags;
const selected = tags.filter((tag) => props.filters.tags.includes(tag.slug));
const filtered = tags.filter((tag) => !props.filters.tags.includes(tag.slug)
diff --git a/src/scenes.js b/src/scenes.js
index 0a28feb..811d47a 100644
--- a/src/scenes.js
+++ b/src/scenes.js
@@ -406,10 +406,10 @@ function curateOptions(options) {
}
// function curateFacet(results, field, count = 'count(distinct id)') {
-function curateFacet(results, field, count = 'count(*)') {
+function curateFacet(results, field) {
return results
- .find((result) => result.columns[0][field] && result.columns[1][count])
- ?.data.map((row) => ({ key: row[field], doc_count: row[count] }))
+ .find((result) => result.columns[0][field] && (result.columns[1]['count(distinct id)'] || result.columns[1]['count(*)']))
+ ?.data.map((row) => ({ key: row[field], doc_count: row['count(distinct id)'] || row['count(*)'] }))
.filter((row) => !!row.key)
|| [];
}
@@ -436,6 +436,7 @@ async function queryManticoreSql(filters, options, _reqUser) {
:yearsFacet:
:actorsFacet:
:tagsFacet:
+ :actorTagsFacet:
:channelsFacet:
:studiosFacet:;
show meta;
@@ -469,12 +470,10 @@ async function queryManticoreSql(filters, options, _reqUser) {
weight() as _score
`));
- /*
- // manticore only supports one joined table, so we can't use it inside stashes; probably not needed anyway (stashes only need global tags?)
+ // manticore only supports one joined table, so we can't use it inside stashes
builder
.leftJoin('scenes_tags', 'scenes_tags.scene_id', 'scenes_.id')
.groupBy('scenes.id');
- */
}
if (filters.query) {
@@ -581,12 +580,10 @@ async function queryManticoreSql(filters, options, _reqUser) {
yearsFacet: options.aggregateYears ? knex.raw('facet effective_year as years_facet order by effective_year desc limit ?', [aggSize]) : null,
actorsFacet: options.aggregateActors ? knex.raw('facet scenes.actor_ids as actors_facet distinct id order by count(*) desc limit ?', [aggSize]) : null,
// don't facet tags associated to other actors, actor ID 0 means global
- tagsFacet: options.aggregateTags ? knex.raw('facet scenes.tag_ids as tags_facet order by count(*) desc limit ?', [aggSize]) : null,
- /*
+ tagsFacet: options.aggregateTags ? knex.raw('facet scenes.tag_ids as tags_facet distinct id order by count(*) desc limit ?', [aggSize]) : null,
actorTagsFacet: options.aggregateTags && !filters.stashId // eslint-disable-line no-nested-ternary
? knex.raw(`facet IF(IN(scenes_tags.actor_id, ${[0, ...filters?.actorIds || []]}), scenes_tags.tag_id, 0) as actor_tags_facet distinct id order by count(*) desc limit ?`, [aggSize])
: null,
- */
channelsFacet: options.aggregateChannels ? knex.raw('facet scenes.channel_id as channels_facet distinct id order by count(*) desc limit ?', [aggSize]) : null,
studiosFacet: options.aggregateChannels ? knex.raw('facet scenes.studio_id as studios_facet distinct id order by count(*) desc limit ?', [aggSize]) : null,
maxMatches: config.database.manticore.maxMatches,
@@ -606,13 +603,10 @@ async function queryManticoreSql(filters, options, _reqUser) {
const results = await utilsApi.sql(curatedSqlQuery);
- // console.log(util.inspect(results, null, Infinity));
-
- const years = curateFacet(results, 'years_facet', 'count(*)');
+ const years = curateFacet(results, 'years_facet');
const actorIds = curateFacet(results, 'actors_facet');
const tagIds = curateFacet(results, 'tags_facet');
- // const actorTagIds = curateFacet(results, 'actor_tags_facet');
- const actorTagIds = [];
+ const actorTagIds = curateFacet(results, 'actor_tags_facet');
const channelIds = curateFacet(results, 'channels_facet');
const studioIds = curateFacet(results, 'studios_facet');