Added 'match all' tag filter for actors and toggle to 'match any'.
This commit is contained in:
@@ -857,6 +857,30 @@ exports.up = knex => Promise.resolve()
|
||||
ORDER BY tags.name;
|
||||
$$ LANGUAGE SQL STABLE;
|
||||
|
||||
CREATE FUNCTION actors_scenes(actor actors, selected_tags text[]) RETURNS SETOF releases AS $$
|
||||
SELECT releases.*
|
||||
FROM releases
|
||||
LEFT JOIN
|
||||
releases_actors ON releases_actors.release_id = releases.id
|
||||
LEFT JOIN
|
||||
actors ON actors.id = releases_actors.actor_id
|
||||
LEFT JOIN
|
||||
releases_tags ON releases_tags.release_id = releases.id
|
||||
LEFT JOIN
|
||||
tags ON tags.id = releases_tags.tag_id
|
||||
WHERE actors.id = actor.id
|
||||
GROUP BY releases.id
|
||||
HAVING CASE
|
||||
WHEN array_length(selected_tags, 1) > 0
|
||||
THEN COUNT(
|
||||
CASE WHEN tags.slug = ANY(selected_tags)
|
||||
THEN true
|
||||
END
|
||||
) = array_length(selected_tags, 1)
|
||||
ELSE true
|
||||
END;
|
||||
$$ LANGUAGE SQL STABLE;
|
||||
|
||||
CREATE FUNCTION releases_is_new(release releases) RETURNS boolean AS $$
|
||||
SELECT EXISTS(SELECT true WHERE (SELECT id FROM batches ORDER BY created_at DESC LIMIT 1) = release.created_batch_id);
|
||||
$$ LANGUAGE sql STABLE;
|
||||
@@ -883,6 +907,8 @@ exports.up = knex => Promise.resolve()
|
||||
|
||||
COMMENT ON COLUMN actors.height IS E'@omit read,update,create,delete,all,many';
|
||||
COMMENT ON COLUMN actors.weight IS E'@omit read,update,create,delete,all,many';
|
||||
|
||||
COMMENT ON FUNCTION actors_scenes IS E'@sortable';
|
||||
`);
|
||||
});
|
||||
|
||||
@@ -943,6 +969,7 @@ exports.down = (knex) => { // eslint-disable-line arrow-body-style
|
||||
|
||||
DROP FUNCTION IF EXISTS releases_is_new;
|
||||
DROP FUNCTION IF EXISTS actors_tags;
|
||||
DROP FUNCTION IF EXISTS actors_scenes;
|
||||
|
||||
DROP TEXT SEARCH CONFIGURATION IF EXISTS traxxx;
|
||||
DROP TEXT SEARCH DICTIONARY IF EXISTS traxxx_dict;
|
||||
|
||||
Reference in New Issue
Block a user