using System; using System.Linq; using System.Linq.Expressions; using GerstITS.Common; using GerstITS.Data; namespace GerstITS.Examples.Logic.Shared { internal static class ISearchEngineExtensions { #region Methods public static TEntity QueryBy(this IReadOnlyRepository repository, Expression> condition) where TEntity : IEntity { return repository.Query() .Where(condition) .FirstOrDefault(); } public static TModel ThrowsAnExceptionIfNotFound(this TModel model, TKey id) { if (model.IsNull()) throw new EntityNotFoundException($"{typeof(TModel).Name} with id '{id}' not found."); return model; } #endregion } }