using System.Linq.Expressions; using MongoDB.Driver; using ShoppingAssistantApi.Application.IRepositories; using ShoppingAssistantApi.Domain.Entities; using ShoppingAssistantApi.Persistance.Database; namespace ShoppingAssistantApi.Persistance.Repositories; public class MessagesRepository : BaseRepository, IMessagesRepository { public MessagesRepository(MongoDbContext db) : base(db, "Messages") { } public async Task> GetPageStartingFromEndAsync(int pageNumber, int pageSize, Expression> predicate, CancellationToken cancellationToken) { var messageCount = await GetCountAsync(predicate, cancellationToken); return await _collection.Find(predicate) .Skip((messageCount / pageSize - pageNumber) * pageSize) .Limit(pageSize) .ToListAsync(cancellationToken); } }