Restored showcased function with indexes.

This commit is contained in:
DebaucheryLibrarian 2023-01-07 17:22:14 +01:00
parent 97d9f5e373
commit abfbb0f279
2 changed files with 23 additions and 39 deletions

View File

@ -431,22 +431,10 @@ const releasesFragment = `
} }
} }
} }
or: [ isShowcased: {
{ equalTo: true
entity: { }
showcased: {
equalTo: true
}
}
}
{
studio: {
showcased: {
equalTo: true
}
}
}
]
}, },
first: $limit, first: $limit,
offset: $offset, offset: $offset,

View File

@ -1,24 +1,20 @@
/* exports.up = async (knex) => Promise.resolve()
exports.up = async (knex) => knex.raw(` .then(() => knex.raw(`
CREATE FUNCTION releases_is_showcased(release releases) RETURNS BOOLEAN AS $$ CREATE FUNCTION releases_is_showcased(release releases) RETURNS BOOLEAN AS $$
SELECT COALESCE(entities.showcased, false) OR COALESCE(studios.showcased, false) FROM releases SELECT COALESCE(entities.showcased, false) OR COALESCE(studios.showcased, false) FROM releases
LEFT JOIN entities ON entities.id = releases.entity_id LEFT JOIN entities ON entities.id = releases.entity_id
LEFT JOIN entities AS studios ON studios.id = releases.studio_id LEFT JOIN entities AS studios ON studios.id = releases.studio_id
WHERE releases.id = release.id WHERE releases.id = release.id
$$ LANGUAGE SQL STABLE; $$ LANGUAGE SQL STABLE;
`); `)).then(() => knex.schema.alterTable('releases', (table) => {
table.index('entity_id');
table.index('studio_id');
}));
exports.down = async (knex) => knex.raw(` exports.down = async (knex) => Promise.resolve()
DROP FUNCTION IF EXISTS releases_is_showcased; .then(() => knex.schema.alterTable('releases', (table) => {
`); table.dropIndex('entity_id');
*/ table.dropIndex('studio_id');
})).then(() => knex.raw(`
exports.up = async (knex) => knex.schema.alterTable('releases', (table) => { DROP FUNCTION IF EXISTS releases_is_showcased;
table.index('entity_id'); `));
table.index('studio_id');
});
exports.down = async (knex) => knex.schema.alterTable('releases', (table) => {
table.dropIndex('entity_id');
table.dropIndex('studio_id');
});