From 34a88d9ac6c3d8f69c99cd43b32e1d34eace56ff Mon Sep 17 00:00:00 2001 From: Mathieu Darse Date: Thu, 9 Apr 2015 11:51:18 +0200 Subject: [PATCH] Simpler range AST constructors --- .../Elastic/AST/RangeExpression.php | 20 +++++++++++++++++++ .../Elastic/Search/QueryVisitor.php | 8 ++++---- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/lib/Alchemy/Phrasea/SearchEngine/Elastic/AST/RangeExpression.php b/lib/Alchemy/Phrasea/SearchEngine/Elastic/AST/RangeExpression.php index cbcb706d76..5e85715087 100644 --- a/lib/Alchemy/Phrasea/SearchEngine/Elastic/AST/RangeExpression.php +++ b/lib/Alchemy/Phrasea/SearchEngine/Elastic/AST/RangeExpression.php @@ -12,6 +12,26 @@ class RangeExpression extends Node private $higher_bound; private $higher_inclusive; + public static function lessThan(Field $field, $bound) + { + return new self($field, $bound, false); + } + + public static function lessThanOrEqual(Field $field, $bound) + { + return new self($field, $bound, true); + } + + public static function greaterThan(Field $field, $bound) + { + return new self($field, null, null, $bound, false); + } + + public static function greaterThanOrEqual(Field $field, $bound) + { + return new self($field, null, null, $bound, true); + } + public function __construct(Field $field, $lb, $li = false, $hb = null, $hi = false) { $this->field = $field; diff --git a/lib/Alchemy/Phrasea/SearchEngine/Elastic/Search/QueryVisitor.php b/lib/Alchemy/Phrasea/SearchEngine/Elastic/Search/QueryVisitor.php index 1e21ca764e..bebacaee6f 100644 --- a/lib/Alchemy/Phrasea/SearchEngine/Elastic/Search/QueryVisitor.php +++ b/lib/Alchemy/Phrasea/SearchEngine/Elastic/Search/QueryVisitor.php @@ -137,13 +137,13 @@ class QueryVisitor implements Visit switch ($node->getId()) { case NodeTypes::LT_EXPR: - return new AST\RangeExpression($field, $expression, false); + return AST\RangeExpression::lessThan($field, $expression); case NodeTypes::LTE_EXPR: - return new AST\RangeExpression($field, $expression, true); + return AST\RangeExpression::lessThanOrEqual($field, $expression); case NodeTypes::GT_EXPR: - return new AST\RangeExpression($field, null, null, $expression, false); + return AST\RangeExpression::greaterThan($field, $expression); case NodeTypes::GTE_EXPR: - return new AST\RangeExpression($field, null, null, $expression, true); + return AST\RangeExpression::greaterThanOrEqual($field, $expression); } }