audiobookshelf/server/utils/queries
Barnabas 25577f5eea Add finishedDates history to keep multiple finished dates per book
Adds a finishedDates JSON column to mediaProgresses that records a
timestamp for every finish event, so re-listening to a book no longer
loses the previous finished date.

- Marking finished (manually or automatically) appends to finishedDates
- Explicitly un-marking finished removes the most recent entry
- Re-listening to a finished item keeps the history
- Migration backfills finishedDates from the existing finishedAt
- finishedDates is exposed on media progress API responses
- Year in review stats now include books re-finished in later years
- Item page shows previous finished dates with a tooltip

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-10 10:21:51 -06:00
..
adminStats.js Create new StatsController and move year in review stats endpoint 2025-03-29 17:34:17 -05:00
authorFilters.js Add Nunicode sqlite extension integration 2024-09-29 09:22:39 +03:00
libraryFilters.js Add profiling to podcast library filterdata queries 2025-02-16 12:47:23 +02:00
libraryItemFilters.js Updates to LibraryController to use new Library model 2024-08-24 15:38:15 -05:00
libraryItemsBookFilters.js Adjust discover/search changes for API compatibility 2026-02-23 19:22:45 -05:00
libraryItemsPodcastFilters.js Adjust discover/search changes for API compatibility 2026-02-23 19:22:45 -05:00
seriesFilters.js Update controllers to use toOldJSON functions 2025-01-04 15:20:41 -06:00
userStats.js Add finishedDates history to keep multiple finished dates per book 2026-06-10 10:21:51 -06:00