using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

namespace AsbCloudApp.Services
{
    public interface ICrudService<Tdto>
        where Tdto : Data.IId
    {
        List<string> Incledes { get; }
        Task<int> DeleteAsync(int id, CancellationToken token = default);
        Task<int> DeleteAsync(IEnumerable<int> ids, CancellationToken token = default);
        Task<IEnumerable<Tdto>> GetAllAsync(CancellationToken token = default);
        Task<Tdto> GetAsync(int id, CancellationToken token = default);
        Task<Data.PaginationContainer<Tdto>> GetPageAsync(int skip = 0, int take = 32, CancellationToken token = default);
        Task<int> InsertAsync(Tdto newItem, CancellationToken token = default);
        Task<int> InsertRangeAsync(IEnumerable<Tdto> newItems, CancellationToken token = default);
        Task<int> UpdateAsync(int id, Tdto item, CancellationToken token = default);
    }
}