From 1cd8cc2dba8c500873a6f69dc7ac767a8d17e606 Mon Sep 17 00:00:00 2001 From: vlad Date: Thu, 1 Mar 2018 16:16:28 -0800 Subject: Support for UUID lists --- .../restquery/rest/parsers/SearchFilterParser.scala | 5 +++-- .../rest/parsers/SearchFilterParserSuite.scala | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/main/scala/xyz/driver/restquery/rest/parsers/SearchFilterParser.scala b/src/main/scala/xyz/driver/restquery/rest/parsers/SearchFilterParser.scala index 13f82a6..23cb2f0 100644 --- a/src/main/scala/xyz/driver/restquery/rest/parsers/SearchFilterParser.scala +++ b/src/main/scala/xyz/driver/restquery/rest/parsers/SearchFilterParser.scala @@ -134,8 +134,9 @@ object SearchFilterParser { private val nAryAtomParser: Parser[SearchFilterExpr.Atom.NAry] = P( dimensionParser ~ whitespaceParser ~ ( naryOperatorParser ~ whitespaceParser ~ - ((longParser.rep(min = 1, sep = ",") ~ End) | (booleanParser - .rep(min = 1, sep = ",") ~ End) | + ((uuidParser.rep(min = 1, sep = ",") ~ End) | + (longParser.rep(min = 1, sep = ",") ~ End) | + (booleanParser.rep(min = 1, sep = ",") ~ End) | (nAryValueParser.!.rep(min = 1, sep = ",") ~ End)) ) ).map { diff --git a/src/test/scala/xyz/driver/restquery/rest/parsers/SearchFilterParserSuite.scala b/src/test/scala/xyz/driver/restquery/rest/parsers/SearchFilterParserSuite.scala index 92c1953..9abf372 100644 --- a/src/test/scala/xyz/driver/restquery/rest/parsers/SearchFilterParserSuite.scala +++ b/src/test/scala/xyz/driver/restquery/rest/parsers/SearchFilterParserSuite.scala @@ -145,6 +145,23 @@ class SearchFilterParserSuite extends FreeSpecLike with Checkers { } } + "actual trial uuid list" - { + "should parse the list of UUIDs as java.util.UUID type" in { + val filter = SearchFilterParser.parse(Seq("filters" -> ("trialId in 57b375a3-2eb3-4fed-a80d-0ffda69d68cf," + + "f82539f1-39a1-48b5-9ca9-636c131bdbf1,2676b5c0-7b14-4962-9455-04055dc37f59"))) + assert( + filter === Success(SearchFilterExpr.Atom.NAry( + Dimension(None, "trial_id"), + In, + Seq( + UUID.fromString("57b375a3-2eb3-4fed-a80d-0ffda69d68cf"), + UUID.fromString("f82539f1-39a1-48b5-9ca9-636c131bdbf1"), + UUID.fromString("2676b5c0-7b14-4962-9455-04055dc37f59") + ) + ))) + } + } + "all operators" - { "should be parsed with numeric values" in check { val testQueryGen = queryGen( -- cgit v1.2.3