feat(authors): collapse series on author pages (#1271)

Reduce large author listings to one card per series while preserving book counts, scoped visibility, and row-based pagination. Compute both totals in the collapsed query so deep pages remain consistent without a second author-wide scan.

Closes #301

Co-authored-by: neon <18559658+neonsolstice@users.noreply.github.com>
This commit is contained in:
SergeiAK
2026-09-10 21:39:14 +03:00
committed by GitHub
parent b7e1e21d07
commit 73ac0bb722
23 changed files with 953 additions and 59 deletions
+21
View File
@@ -351,6 +351,27 @@ export const E2E_SUITES = Object.freeze({
...SHARED_DB_AND_HELPER_PATHS,
],
},
"author-books-collapse": {
id: "author-books-collapse",
name: "Author Books Collapse",
timeout: 60,
lane: "full",
description: "Author page series collapsing, and the row and book counts it reports",
vitestTarget: "test/author-books-collapse.e2e-spec.ts",
junitOutput: `${TEST_RESULTS_DIR}/author-books-collapse-e2e-junit.xml`,
prepareDedicatedDatabase: true,
useDedicatedDatabase: true,
changedPaths: [
"server/src/modules/authors/**",
"server/src/modules/book/book.repository.ts",
"server/src/modules/book/book-read.service.ts",
"server/test/author-books-collapse.e2e-spec.ts",
"server/test/e2e/authorization-matrix/**",
".github/workflows/e2e-runner.yml",
"packages/types/src/author.ts",
...SHARED_DB_AND_HELPER_PATHS,
],
},
"series-next-book": {
id: "series-next-book",
name: "Series Next Book",