using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;

namespace SessionCompanion.Services.Base
{
    public interface IServiceBase<TViewModel, TEntity> : IDisposable
    {
        IEnumerable<TViewModel> Get();
        Task<TViewModel> Get(int id);
        Task<IEnumerable<TEntity>> Get(Expression<Func<TEntity, bool>> expresssion);
        Task Create(TViewModel viewModel);
        Task Update(int id, TViewModel viewModel);
        Task Delete(int id);
        Task SaveAsync();
    }
}