using DramaLing.Api.Models.Entities; namespace DramaLing.Api.Repositories; /// /// Flashcard 專門的 Repository 介面,包含業務特定的查詢方法 /// public interface IFlashcardRepository : IRepository { // 用戶相關查詢 Task> GetFlashcardsByUserIdAsync(Guid userId); Task> GetFlashcardsByCardSetIdAsync(Guid cardSetId); // 學習相關查詢 Task> GetDueFlashcardsAsync(Guid userId, DateTime dueDate); Task> GetFlashcardsByDifficultyAsync(Guid userId, string difficultyLevel); Task> GetRecentlyAddedAsync(Guid userId, int count); Task> GetMostReviewedAsync(Guid userId, int count); // 統計查詢 Task GetTotalFlashcardsCountAsync(Guid userId); Task GetMasteredFlashcardsCountAsync(Guid userId); Task> GetFlashcardsByDifficultyStatsAsync(Guid userId); // 搜尋功能 Task> SearchFlashcardsAsync(Guid userId, string searchTerm); Task> GetFavoriteFlashcardsAsync(Guid userId); Task> GetArchivedFlashcardsAsync(Guid userId); // 批次操作 Task BulkUpdateMasteryLevelAsync(IEnumerable flashcardIds, int newMasteryLevel); Task BulkUpdateNextReviewDateAsync(IEnumerable flashcardIds, DateTime newDate); // 性能優化查詢 Task> GetFlashcardsWithIncludesAsync(Guid userId, bool includeTags = false, bool includeStudyRecords = false); }