From 1efa4715d7d1728854a7c73d91f47b4b743e01c2 Mon Sep 17 00:00:00 2001 From: DebaucheryLibrarian Date: Sat, 25 Jul 2026 02:15:25 +0200 Subject: [PATCH] Added last stash to stashes_meta to allow for sorting by recently used. --- .../20260725000000_stashes_meta_last_added.js | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 migrations/20260725000000_stashes_meta_last_added.js diff --git a/migrations/20260725000000_stashes_meta_last_added.js b/migrations/20260725000000_stashes_meta_last_added.js new file mode 100644 index 00000000..7695e52d --- /dev/null +++ b/migrations/20260725000000_stashes_meta_last_added.js @@ -0,0 +1,38 @@ +exports.up = async function(knex) { + await knex.raw(` + DROP MATERIALIZED VIEW stashes_meta; + + CREATE MATERIALIZED VIEW stashes_meta AS ( + SELECT + stashes.id as stash_id, + COUNT(DISTINCT stashes_scenes)::integer as stashed_scenes, + COUNT(DISTINCT stashes_movies)::integer as stashed_movies, + COUNT(DISTINCT stashes_actors)::integer as stashed_actors, + MAX(GREATEST(stashes_scenes.created_at, stashes_movies.created_at, stashes_actors.created_at)) as stashed_last + FROM stashes + LEFT JOIN stashes_scenes ON stashes_scenes.stash_id = stashes.id + LEFT JOIN stashes_movies ON stashes_movies.stash_id = stashes.id + LEFT JOIN stashes_actors ON stashes_actors.stash_id = stashes.id + GROUP BY stashes.id + ); + `); +}; + +exports.down = async function(knex) { + await knex.raw(` + DROP MATERIALIZED VIEW stashes_meta; + + CREATE MATERIALIZED VIEW stashes_meta AS ( + SELECT + stashes.id as stash_id, + COUNT(DISTINCT stashes_scenes)::integer as stashed_scenes, + COUNT(DISTINCT stashes_movies)::integer as stashed_movies, + COUNT(DISTINCT stashes_actors)::integer as stashed_actors + FROM stashes + LEFT JOIN stashes_scenes ON stashes_scenes.stash_id = stashes.id + LEFT JOIN stashes_movies ON stashes_movies.stash_id = stashes.id + LEFT JOIN stashes_actors ON stashes_actors.stash_id = stashes.id + GROUP BY stashes.id + ); + `); +};