using System.Collections.Generic;
using System.Threading.Tasks;
namespace VNLib.Plugins.Extensions.Data.Abstractions
{
///
/// Defines a Data-Store that can retirieve and manipulate paginated
/// data
///
/// The data-model type
public interface IPaginatedDataStore
{
///
/// Gets a collection of records using a pagination style query, and adds the records to the collecion
///
/// The collection to add records to
/// Pagination page to get records from
/// The maximum number of items to retrieve from the store
/// A task that resolves the number of items added to the collection
Task GetPageAsync(ICollection collection, int page, int limit);
///
/// Gets a collection of records using a pagination style query with constraint arguments, and adds the records to the collecion
///
/// The collection to add records to
/// Pagination page to get records from
/// The maximum number of items to retrieve from the store
/// A params array of strings to constrain the result set from the db
/// A task that resolves the number of items added to the collection
Task GetPageAsync(ICollection collection, int page, int limit, params string[] constraints);
}
}