exports.up = async (knex) => knex.raw(` CREATE FUNCTION entities_scenes(entity entities) RETURNS SETOF releases AS $$ WITH RECURSIVE children AS ( SELECT entities.id FROM entities WHERE entities.id = entity.id UNION ALL SELECT entities.id FROM entities INNER JOIN children ON children.id = entities.parent_id ) SELECT releases FROM releases INNER JOIN children ON children.id = releases.entity_id UNION SELECT releases FROM releases INNER JOIN children ON children.id = releases.studio_id; $$ LANGUAGE SQL STABLE; COMMENT ON FUNCTION entities_scenes IS E'@sortable'; `); exports.down = async (knex) => knex.raw(` DROP FUNCTION IF EXISTS entities_scenes; `);