Removed MagicOnion Added LiteNetLib Created client and server abstractions Fixed serialization bugs
32 lines
1.1 KiB
C#
32 lines
1.1 KiB
C#
using System;
|
|
using System.Linq.Expressions;
|
|
using System.Reflection;
|
|
using Remotion.Linq;
|
|
using RethinkDb.Driver.Ast;
|
|
|
|
namespace RethinkDb.Driver.Linq.WhereClauseParsers
|
|
{
|
|
public class DefaultParser : IWhereClauseParser
|
|
{
|
|
public bool IsAppropriate( ReqlAst reql, Expression expression, Type resultType ) => true;
|
|
|
|
public ReqlExpr Parse( ReqlExpr expression, QueryModel queryModel, Expression predicate )
|
|
{
|
|
return expression.Filter( reqlExpr => GetWhereReqlAst( reqlExpr, predicate, queryModel ) );
|
|
}
|
|
|
|
private static ReqlExpr GetWhereReqlAst( ReqlExpr reqlExpr, Expression predicate, QueryModel queryModel )
|
|
{
|
|
var visitor = new ExpressionVisitor( reqlExpr, GetResultType( queryModel ) );
|
|
visitor.Visit( predicate );
|
|
return visitor.Current;
|
|
}
|
|
|
|
private static Type GetResultType( QueryModel queryModel )
|
|
{
|
|
if( !queryModel.ResultTypeOverride.GetTypeInfo().IsGenericType )
|
|
return queryModel.ResultTypeOverride;
|
|
return queryModel.ResultTypeOverride.GetTypeInfo().GenericTypeArguments[0];
|
|
}
|
|
}
|
|
}
|