2025-03-16 14:35:53 -05:00
|
|
|
|
using LANCommander.Server.Data.Enums;
|
2024-10-18 19:15:05 -05:00
|
|
|
|
using LANCommander.Server.Data.Models;
|
|
|
|
|
|
using LANCommander.Server.Services.Models;
|
|
|
|
|
|
using System.Linq.Expressions;
|
|
|
|
|
|
|
2025-03-16 14:35:53 -05:00
|
|
|
|
namespace LANCommander.Server.Services.Abstractions
|
2024-10-18 19:15:05 -05:00
|
|
|
|
{
|
2025-02-01 02:21:34 -06:00
|
|
|
|
public interface IBaseDatabaseService<T> where T : class, IBaseModel
|
2024-10-18 19:15:05 -05:00
|
|
|
|
{
|
2024-11-25 22:29:56 -06:00
|
|
|
|
IBaseDatabaseService<T> Query(Func<IQueryable<T>, IQueryable<T>> modifier);
|
|
|
|
|
|
IBaseDatabaseService<T> Include(params Expression<Func<T, object>>[] expressions);
|
|
|
|
|
|
IBaseDatabaseService<T> SortBy(Expression<Func<T, object>> expression, SortDirection direction = SortDirection.Ascending);
|
2025-02-01 02:21:34 -06:00
|
|
|
|
IBaseDatabaseService<T> AsNoTracking();
|
2025-02-16 13:24:23 -06:00
|
|
|
|
IBaseDatabaseService<T> AsSplitQuery();
|
2024-11-11 18:18:59 -06:00
|
|
|
|
|
2024-11-12 18:32:46 -06:00
|
|
|
|
Task<ICollection<T>> GetAsync();
|
2024-10-18 19:15:05 -05:00
|
|
|
|
|
2024-11-12 18:32:46 -06:00
|
|
|
|
Task<T> GetAsync(Guid id);
|
2024-10-18 19:15:05 -05:00
|
|
|
|
|
2024-11-12 18:32:46 -06:00
|
|
|
|
Task<ICollection<T>> GetAsync(Expression<Func<T, bool>> predicate);
|
2024-10-18 19:15:05 -05:00
|
|
|
|
|
2024-11-12 18:32:46 -06:00
|
|
|
|
Task<T> FirstOrDefaultAsync(Expression<Func<T, bool>> predicate);
|
2024-10-18 19:15:05 -05:00
|
|
|
|
|
2024-11-12 18:32:46 -06:00
|
|
|
|
Task<bool> ExistsAsync(Guid id);
|
2025-03-28 19:16:51 -05:00
|
|
|
|
Task<bool> ExistsAsync(Expression<Func<T, bool>> predicate);
|
2024-10-18 19:15:05 -05:00
|
|
|
|
|
2024-11-12 18:32:46 -06:00
|
|
|
|
Task<T> AddAsync(T entity);
|
2024-10-18 19:15:05 -05:00
|
|
|
|
|
2024-11-12 18:32:46 -06:00
|
|
|
|
Task<ExistingEntityResult<T>> AddMissingAsync(Expression<Func<T, bool>> predicate, T entity);
|
2024-10-18 19:15:05 -05:00
|
|
|
|
|
2024-11-12 18:32:46 -06:00
|
|
|
|
Task<T> UpdateAsync(T entity);
|
2024-10-18 19:15:05 -05:00
|
|
|
|
|
2024-11-12 18:32:46 -06:00
|
|
|
|
Task DeleteAsync(T entity);
|
2025-05-02 02:24:07 +02:00
|
|
|
|
// TODO: Add IBaseDatabaseService<>.DeleteRangeAsync
|
|
|
|
|
|
//Task DeleteRangeAsync(IEnumerable<T> entities);
|
2024-10-18 19:15:05 -05:00
|
|
|
|
}
|
|
|
|
|
|
}
|