- Add request-level user bookmark memoization in BookmarkStatusSerializer to eliminate redundant queries across all lists
- Optimize BookReferenceSyncView and BookReference.authors caching (reduced queries from 185 to 10)
- Add multi-level prefetch_related for references and images in HadisMainListView (reduced queries from 109 to 6)
- Add incremental sync support (updated_after/since) in HadisSyncView
- Add select_related for language in BookListView (reduced queries from 35 to 18)
- Annotate episode count and cache effective_thumbnail in podcast and video playlist views (reduced queries from 22/17 to 4)
- Prefetch categories with annotated article counts in ArticleListAPIView (reduced queries from 41 to 3)
- Scale Gunicorn workers/threads to 4w/4t (16 concurrency) with gthread in docker-compose.prod.yml
- Introduced a new test script `test_apis.py` to verify all video and podcast API endpoints.
- Implemented a function to test individual endpoints with support for authenticated and anonymous users.
- Included detailed logging of test results, including status codes and errors, to facilitate debugging and ensure API reliability.
- Enhanced test coverage for both video and podcast APIs, ensuring all critical endpoints are validated.
- Introduced new models for PodcastPlaylist and VideoPlaylist, replacing the outdated PodcastInCollection and VideoInCollection models.
- Updated admin interfaces to manage playlists effectively, including new fields for slug, slogan, description, and thumbnail.
- Enhanced serializers to support playlist data and added methods for calculating total time and retrieving associated videos/podcasts.
- Implemented management commands for creating playlists and cleaning up old data, ensuring a streamlined user experience.
- Adjusted API endpoints to accommodate the new playlist structure while maintaining backward compatibility for existing video endpoints.
- Introduced a new service choice 'Article' to the Bookmark model.
- Updated the database migration to reflect the new service choice in the 'service' field of the Bookmark model.
- Enhanced the service validation logic to include checks for the new 'Article' service type.
- Simplified the bookmark creation process by using request data directly in the serializer.
- Introduced a new `perform_create` method to save the user context during bookmark creation.
- Enhanced the book listing functionality to filter books by download status for the current user, using a new query parameter `is_downloaded`.