using LANCommander.Server.Data; using LANCommander.Server.Data.Models; using LANCommander.Server.Models; using LANCommander.Server.Services.Models; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; using System.Linq.Expressions; namespace LANCommander.Server.Services { public interface IBaseDatabaseService where T : class, IBaseModel { Repository Repository { get; set; } IBaseDatabaseService Include(Expression> includeExpression); Task> GetAsync(); Task> GetAsync(); Task GetAsync(Guid id); Task GetAsync(Guid id); Task> GetAsync(Expression> predicate); Task> GetAsync(Expression> predicate); Task FirstOrDefaultAsync(Expression> predicate); Task FirstOrDefaultAsync(Expression> predicate); Task FirstOrDefaultAsync(Expression> predicate, Expression> orderKeySelector); Task FirstOrDefaultAsync(Expression> predicate, Expression> orderKeySelector); Task ExistsAsync(Guid id); Task AddAsync(T entity); Task> AddMissingAsync(Expression> predicate, T entity); Task UpdateAsync(T entity); Task DeleteAsync(T entity); } }