LCOV - code coverage report
Current view: top level - Cqrs/Repositories/Queries - QueryStrategy.cs Hit Total Coverage
Test: doc-coverage.info Lines: 0 11 0.0 %
Date: 2017-07-26

          Line data    Source code
       1             : using System;
       2             : using System.Collections.Generic;
       3             : using System.Reflection;
       4             : 
       5             : namespace Cqrs.Repositories.Queries
       6             : {
       7             :         public abstract class QueryStrategy : IQueryStrategy
       8           0 :         {
       9             :                 #region Implementation of IQueryStrategy
      10             : 
      11             :                 public IQueryPredicate QueryPredicate { get; protected set; }
      12             : 
      13             :                 #endregion
      14             : 
      15           0 :                 public virtual IQueryPredicate IsNotLogicallyDeleted()
      16             :                 {
      17             :                         return BuildQueryPredicate(IsNotLogicallyDeleted);
      18             :                 }
      19             : 
      20           0 :                 public virtual IQueryPredicate WithPermissionScopeAny<TAuthenticationToken>(TAuthenticationToken authenticationToken)
      21             :                 {
      22             :                         return BuildQueryPredicate(WithPermissionScopeAny, authenticationToken);
      23             :                 }
      24             : 
      25           0 :                 public virtual IQueryPredicate WithPermissionScopeUser<TAuthenticationToken>(TAuthenticationToken authenticationToken)
      26             :                 {
      27             :                         return BuildQueryPredicate(WithPermissionScopeUser, authenticationToken);
      28             :                 }
      29             : 
      30           0 :                 public virtual IQueryPredicate WithPermissionScopeCompany<TAuthenticationToken>(TAuthenticationToken authenticationToken)
      31             :                 {
      32             :                         return BuildQueryPredicate(WithPermissionScopeCompany, authenticationToken);
      33             :                 }
      34             : 
      35           0 :                 public virtual IQueryPredicate WithPermissionScopeCompanyAndUser<TAuthenticationToken>(TAuthenticationToken authenticationToken)
      36             :                 {
      37             :                         return BuildQueryPredicate(WithPermissionScopeCompanyAndUser, authenticationToken);
      38             :                 }
      39             : 
      40           0 :                 protected virtual IQueryPredicate BuildQueryPredicate<TData>(Func<TData> func)
      41             :                 {
      42             :                         var queryPredicate = new QueryPredicate
      43             :                         {
      44             :                                 Name = func.Method.Name,
      45             :                                 Parameters = new SortedSet<QueryParameter>()
      46             :                         };
      47             : 
      48             :                         return queryPredicate;
      49             :                 }
      50             : 
      51           0 :                 protected virtual IQueryPredicate BuildQueryPredicate<TParameter1, TData>(Func<TParameter1, TData> func, TParameter1 parameter1)
      52             :                 {
      53             :                         var queryPredicate = new QueryPredicate
      54             :                         {
      55             :                                 Name = func.Method.Name,
      56             :                                 Parameters = new SortedSet<QueryParameter>()
      57             :                         };
      58             : 
      59             :                         foreach (ParameterInfo parameterInfo in func.Method.GetParameters())
      60             :                         {
      61             :                                 queryPredicate.Parameters.Add(new QueryParameter(parameterInfo.Name, parameter1));
      62             :                         }
      63             : 
      64             :                         return queryPredicate;
      65             :                 }
      66             : 
      67           0 :                 protected virtual IQueryPredicate BuildQueryPredicate<TParameter1, TParameter2, TData>(Func<TParameter1, TParameter2, TData> func, TParameter1 parameter1, TParameter2 parameter2)
      68             :                 {
      69             :                         var queryPredicate = new QueryPredicate
      70             :                         {
      71             :                                 Name = func.Method.Name,
      72             :                                 Parameters = new SortedSet<QueryParameter>()
      73             :                         };
      74             : 
      75             :                         int parameterIndex = 1;
      76             :                         foreach (ParameterInfo parameterInfo in func.Method.GetParameters())
      77             :                         {
      78             :                                 object parameter;
      79             :                                 switch (parameterIndex)
      80             :                                 {
      81             :                                         case 1:
      82             :                                                 parameter = parameter1;
      83             :                                                 break;
      84             :                                         case 2:
      85             :                                                 parameter = parameter2;
      86             :                                                 break;
      87             :                                         default:
      88             :                                                 throw new InvalidOperationException();
      89             :                                 }
      90             :                                 queryPredicate.Parameters.Add(new QueryParameter(parameterInfo.Name, parameter));
      91             :                                 parameterIndex++;
      92             :                         }
      93             : 
      94             :                         return queryPredicate;
      95             :                 }
      96             : 
      97           0 :                 protected virtual IQueryPredicate And(IQueryPredicate queryPredicate)
      98             :                 {
      99             :                         if (QueryPredicate == null)
     100             :                                 return queryPredicate;
     101             : 
     102             :                         return new AndQueryPredicate
     103             :                         {
     104             :                                 LeftQueryPredicate = QueryPredicate,
     105             :                                 RightQueryPredicate = queryPredicate
     106             :                         };
     107             :                 }
     108             : 
     109           0 :                 protected virtual IQueryPredicate Or(IQueryPredicate queryPredicate)
     110             :                 {
     111             :                         return new OrQueryPredicate
     112             :                         {
     113             :                                 LeftQueryPredicate = QueryPredicate,
     114             :                                 RightQueryPredicate = queryPredicate
     115             :                         };
     116             :                 }
     117             :         }
     118             : }

Generated by: LCOV version 1.10