exports.up = async function up(knex) {
	await knex.raw(`
		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
		);
	`);
};

exports.down = async function down(knex) {
	await knex.raw(`
		DROP MATERIALIZED VIEW IF EXISTS stashes_meta;
	`);
};