24 lines
630 B
JavaScript
Executable File
24 lines
630 B
JavaScript
Executable File
exports.up = async (knex) => knex.raw(`
|
|
CREATE FUNCTION entities_scene_tags(entity entities, selectable_tags text[]) RETURNS SETOF tags AS $$
|
|
SELECT tags.*
|
|
FROM releases
|
|
LEFT JOIN
|
|
releases_tags ON releases_tags.release_id = releases.id
|
|
LEFT JOIN
|
|
tags ON tags.id = releases_tags.tag_id
|
|
WHERE
|
|
releases.entity_id = entity.id
|
|
AND
|
|
CASE WHEN array_length(selectable_tags, 1) IS NOT NULL
|
|
THEN tags.slug = ANY(selectable_tags)
|
|
ELSE true
|
|
END
|
|
GROUP BY tags.id
|
|
ORDER BY tags.name;
|
|
$$ LANGUAGE SQL STABLE;
|
|
`);
|
|
|
|
exports.down = async (knex) => knex.raw(`
|
|
DROP FUNCTION IF EXISTS entities_scene_tags;
|
|
`);
|