2023-01-07 16:22:14 +00:00
|
|
|
exports.up = async (knex) => Promise.resolve()
|
|
|
|
.then(() => knex.raw(`
|
|
|
|
CREATE FUNCTION releases_is_showcased(release releases) RETURNS BOOLEAN AS $$
|
|
|
|
SELECT COALESCE(entities.showcased, false) OR COALESCE(studios.showcased, false) FROM releases
|
|
|
|
LEFT JOIN entities ON entities.id = releases.entity_id
|
|
|
|
LEFT JOIN entities AS studios ON studios.id = releases.studio_id
|
|
|
|
WHERE releases.id = release.id
|
|
|
|
$$ LANGUAGE SQL STABLE;
|
|
|
|
`)).then(() => knex.schema.alterTable('releases', (table) => {
|
|
|
|
table.index('entity_id');
|
|
|
|
table.index('studio_id');
|
|
|
|
}));
|
2023-01-04 01:11:12 +00:00
|
|
|
|
2023-01-07 16:22:14 +00:00
|
|
|
exports.down = async (knex) => Promise.resolve()
|
|
|
|
.then(() => knex.schema.alterTable('releases', (table) => {
|
|
|
|
table.dropIndex('entity_id');
|
|
|
|
table.dropIndex('studio_id');
|
|
|
|
})).then(() => knex.raw(`
|
|
|
|
DROP FUNCTION IF EXISTS releases_is_showcased;
|
|
|
|
`));
|