using BCards.Web.Models; using MongoDB.Driver; namespace BCards.Web.Repositories; public interface IUserPageRepository { Task GetByIdAsync(string id); Task GetBySlugAsync(string category, string slug); Task GetByUserIdAsync(string userId); Task> GetByUserIdAllAsync(string userId); Task> GetActivePagesAsync(); Task CreateAsync(UserPage userPage); Task UpdateAsync(UserPage userPage); Task DeleteAsync(string id); Task SlugExistsAsync(string category, string slug, string? excludeId = null); Task> GetRecentPagesAsync(int limit = 10); Task> GetByCategoryAsync(string category, int limit = 20); Task UpdateAnalyticsAsync(string id, PageAnalytics analytics); Task> GetManyAsync( FilterDefinition filter, SortDefinition? sort = null, int skip = 0, int take = 20); Task> GetPendingModerationAsync(int skip = 0, int take = 20); Task CountAsync(FilterDefinition filter); Task UpdateAsync(string id, UpdateDefinition update); Task UpdateManyAsync(FilterDefinition filter, UpdateDefinition update); Task ApprovePageAsync(string pageId); Task RejectPageAsync(string pageId, string reason, List issues); }