Compare commits

...

2 Commits

Author SHA1 Message Date
DebaucheryLibrarian c4e77acdee 1.228.1 2023-06-19 01:25:33 +02:00
DebaucheryLibrarian 67c1bc6b1c Selecting parent and grantparent networks in entity releases filter. 2023-06-19 01:25:31 +02:00
4 changed files with 42 additions and 28 deletions

View File

@ -90,14 +90,28 @@ function initEntitiesActions(store, router) {
offset: $offset offset: $offset
orderBy: $orderBy orderBy: $orderBy
filter: { filter: {
entity: { entity: {
slug: { or: [
equalTo: $entitySlug {
} slug: { equalTo: $entitySlug }
type: { type: { equalTo: $entityType }
equalTo: $entityType }
} {
} parent:{
slug: { equalTo: $entitySlug }
type: { equalTo: $entityType }
}
}
{
parent:{
parent: {
slug: { equalTo: $entitySlug }
type: { equalTo: $entityType }
}
}
}
]
}
effectiveDate: { effectiveDate: {
lessThan: $before, lessThan: $before,
greaterThan: $after greaterThan: $after

View File

@ -1738,23 +1738,23 @@ exports.up = (knex) => Promise.resolve()
WHERE releases.entity_id = entity.id; WHERE releases.entity_id = entity.id;
$$ LANGUAGE SQL STABLE; $$ LANGUAGE SQL STABLE;
CREATE FUNCTION entities_scene_tags(entity entities, selectable_tags text[]) RETURNS SETOF tags AS $$ CREATE FUNCTION entities_scene_tags(entity entities, selectable_tags text[]) RETURNS SETOF tags AS $$
SELECT tags.* SELECT tags.*
FROM releases FROM releases
LEFT JOIN LEFT JOIN
releases_tags ON releases_tags.release_id = releases.id releases_tags ON releases_tags.release_id = releases.id
LEFT JOIN LEFT JOIN
tags ON tags.id = releases_tags.tag_id tags ON tags.id = releases_tags.tag_id
WHERE WHERE
releases.entity_id = entity.id releases.entity_id = entity.id
AND AND
CASE WHEN array_length(selectable_tags, 1) IS NOT NULL CASE WHEN array_length(selectable_tags, 1) IS NOT NULL
THEN tags.slug = ANY(selectable_tags) THEN tags.slug = ANY(selectable_tags)
ELSE true ELSE true
END END
GROUP BY tags.id GROUP BY tags.id
ORDER BY tags.name; ORDER BY tags.name;
$$ LANGUAGE SQL STABLE; $$ LANGUAGE SQL STABLE;
/* GraphQL/Postgraphile 'every' applies to the data, will only include scenes for which every assigned tag is selected, /* GraphQL/Postgraphile 'every' applies to the data, will only include scenes for which every assigned tag is selected,
instead of what we want; scenes with every selected tag, but possibly also some others */ instead of what we want; scenes with every selected tag, but possibly also some others */

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{ {
"name": "traxxx", "name": "traxxx",
"version": "1.228.0", "version": "1.228.1",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "traxxx", "name": "traxxx",
"version": "1.228.0", "version": "1.228.1",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@casl/ability": "^5.2.2", "@casl/ability": "^5.2.2",

View File

@ -1,6 +1,6 @@
{ {
"name": "traxxx", "name": "traxxx",
"version": "1.228.0", "version": "1.228.1",
"description": "All the latest porn releases in one place", "description": "All the latest porn releases in one place",
"main": "src/app.js", "main": "src/app.js",
"scripts": { "scripts": {