using MTWorkHR.Core.Entities.Base;
using MTWorkHR.Core.IDto;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MTWorkHR.Core.IRepositories.Base
{
    public interface IRepository<T> where T : class
    {
        Task<T> GetByIdAsync(long id);
        Task<Tuple<ICollection<T>, int>> GetAllAsync(IPagingInputDto pagingInputDto);

        Task<Tuple<ICollection<T>, int>> GetAllAsync();
        Task<T> AddAsync(T entity);
        Task<IList<T>> AddRangeAsync(IList<T> entities);
        Task DeleteAsync(T entity);
        Task DeleteRangeAsync(IEnumerable<T> entities);

    }
}
