/* * Copyright (c) 2022 Vaughn Nugent * * Library: VNLib * Package: VNLib.Plugins.Extensions.Data * File: IPaginatedDataStore.cs * * IPaginatedDataStore.cs is part of VNLib.Plugins.Extensions.Data which is part of the larger * VNLib collection of libraries and utilities. * * VNLib.Plugins.Extensions.Data is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation, either version 2 of the License, * or (at your option) any later version. * * VNLib.Plugins.Extensions.Data is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with VNLib.Plugins.Extensions.Data. If not, see http://www.gnu.org/licenses/. */ 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); } }