wrolpi/alembic/versions
lrnselfreliance 5c78aa332d
Some checks failed
CodeQL / Analyze (push) Has been cancelled
Controller Tests / controller-tests (push) Has been cancelled
Jest Tests / jest-tests (push) Has been cancelled
collections: listing answers channel and download queries from covering indexes (#740)
The listing still read every channel row (for the summary columns) and every download
row of the listed Collections (for the minimum frequency). Both tables store yt-dlp
info_json, so rows are tens of KB and each sits on its own scattered page; selecting
fewer columns did not help because the seek per row is the cost. From a cold disk
cache that was 5 s per table, 10+ s total, on a large library.

Two covering indexes, channel (collection_id, video_count, total_size) and
download (collection_id, frequency), answer both queries without touching a row. The
listing no longer loads Download objects at all; it computes min_download_frequency
with one grouped query and drops the unused `downloads` array from listing rows (the
detail endpoints keep it; the list views only read min_download_frequency).

Adds a models-vs-migrations test (alembic check) so an index or column added to a
model without a migration, or vice versa, fails the suite.

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-27 12:53:40 -06:00
..
2026_07_10_1350_sqlite_baseline.py Postgres -> SQLite hard cutover: the database moves into the media directory. 2026-07-12 14:09:37 -06:00
2026_07_14_0900_browse_covering_index.py SQLite: make the browse pages index-only. 2026-07-14 07:46:29 -06:00
2026_09_16_1200_file_group_stem.py files: SQL FileGroup compare, stem column, drop unused discovery path (#713) 2026-09-18 08:57:56 -06:00
2026_09_18_1200_unique_directory_stem.py files: unique (directory, stem) after collapsing duplicate FileGroups (#715) 2026-09-19 21:03:49 -06:00
2026_09_20_1200_drop_file_group_idempotency.py files: extract refresh compare into its own module; drop file_group.idempotency (#717) 2026-09-20 20:58:19 -06:00
2026_09_27_1200_domain_collection_summary.py collections: channel and domain listings read trigger-maintained summary columns (#739) 2026-09-27 11:36:08 -06:00
2026_09_28_1200_collection_listing_indexes.py collections: listing answers channel and download queries from covering indexes (#740) 2026-09-27 12:53:40 -06:00