feat: implement per-user read status tracking

- add user_book_status table (userId, bookId, status, source, timestamps)
- add UserBookStatusModule with repository and service
- auto-update status on progress save (fire-and-forget, skips manual overrides)
- expose PATCH /api/v1/books/:id/status endpoint
- include readStatus on BookCard and BookDetail responses
- surface status icon overlay on cover cards (toggleable)
- add status dropdown in book detail page inline with rating stars
- rewrite statistics summary to query user_book_status directly
This commit is contained in:
neon
2026-03-20 05:07:16 -06:00
parent 7d3a88e23d
commit 2df7e093c5
27 changed files with 565 additions and 42 deletions
+2
View File
@@ -48,6 +48,7 @@ import { MetadataScoreModule } from './modules/metadata-score/metadata-score.mod
import { StatisticsModule } from './modules/statistics/statistics.module';
import { UserStatisticsModule } from './modules/user-statistics/user-statistics.module';
import { ReadingSessionModule } from './modules/reading-session/reading-session.module';
import { UserBookStatusModule } from './modules/user-book-status/user-book-status.module';
import { AuditModule } from './modules/audit/audit.module';
@Module({
@@ -96,6 +97,7 @@ import { AuditModule } from './modules/audit/audit.module';
StatisticsModule,
UserStatisticsModule,
ReadingSessionModule,
UserBookStatusModule,
AuditModule,
],
providers: [