using System.Linq.Expressions; using Microsoft.EntityFrameworkCore; using WatchIt.DTO.Query; namespace WatchIt.WebAPI.Repositories; public interface IRepository where T : class { public Task> GetAllAsync(Func, IQueryable>? additionalIncludes = null); public Task UpdateAsync(T entity, Action updateFunc); public Task AddAsync(T entity); public Task UpdateOrAddAsync(T? entity, Func addFunc, Action updateFunc); public Task DeleteAsync(T entity); public Task DeleteAsync(Expression> predicate); }