diff --git a/assets/js/curate.js b/assets/js/curate.js index bf6d236c..2d5a9411 100644 --- a/assets/js/curate.js +++ b/assets/js/curate.js @@ -117,9 +117,7 @@ function curateEntity(entity, parent, releases) { if (entity.parent || parent) curatedEntity.parent = curateEntity(entity.parent || parent); if (releases) curatedEntity.releases = releases.map((release) => curateRelease(release)); - if (entity.connection) { - curatedEntity.sceneTotal = entity.connection.totalCount; - } + curatedEntity.sceneTotal = entity.sceneTotal; return curatedEntity; } diff --git a/assets/js/entities/actions.js b/assets/js/entities/actions.js index 88ad3c4a..b49e9756 100644 --- a/assets/js/entities/actions.js +++ b/assets/js/entities/actions.js @@ -62,12 +62,10 @@ function initEntitiesActions(store, router) { independent hasLogo ${campaignsFragment} + sceneTotal children: childEntitiesConnection { totalCount } - connection: scenesConnection { - totalCount - } } } ${campaignsFragment} diff --git a/migrations/20220126132955_scene_counts.js b/migrations/20220126132955_scene_counts.js new file mode 100644 index 00000000..ae58bce0 --- /dev/null +++ b/migrations/20220126132955_scene_counts.js @@ -0,0 +1,11 @@ +exports.up = async (knex) => knex.raw(` + CREATE OR REPLACE FUNCTION entities_scene_total(entity entities) RETURNS integer AS $$ + SELECT COUNT(id) + FROM releases + WHERE releases.entity_id = entity.id; + $$ LANGUAGE SQL STABLE; +`); + +exports.down = async (knex) => knex.raw(` + DROP FUNCTION IF EXISTS entities_scene_total; +`);