diff options
author | Kseniya Tomskikh <ktomskih@datamonsters.co> | 2018-05-23 12:17:58 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-23 12:17:58 -0700 |
commit | 1e898f0cfaea9ebb193e0db2d420663717c286a1 (patch) | |
tree | a7a68723dd88819ee8a82169ccb687cad1a3fca8 /src/main/scala/xyz/driver/restquery/rest/parsers/SearchFilterParser.scala | |
parent | 79f539d90b0f18b44c5ee6af08aeda6adfb08612 (diff) | |
parent | 813ce049a541ce2005bf2301956203c9f69052df (diff) | |
download | rest-query-a886c5775893423d9fff17fc4d64ae62505115dc.tar.gz rest-query-a886c5775893423d9fff17fc4d64ae62505115dc.tar.bz2 rest-query-a886c5775893423d9fff17fc4d64ae62505115dc.zip |
Merge pull request #2 from drivergroup/HYPE-50v1.1.12
HYPE-5 Support filters by date
Diffstat (limited to 'src/main/scala/xyz/driver/restquery/rest/parsers/SearchFilterParser.scala')
-rw-r--r-- | src/main/scala/xyz/driver/restquery/rest/parsers/SearchFilterParser.scala | 13 |
1 files changed, 11 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 23cb2f0..0d351e9 100644 --- a/src/main/scala/xyz/driver/restquery/rest/parsers/SearchFilterParser.scala +++ b/src/main/scala/xyz/driver/restquery/rest/parsers/SearchFilterParser.scala @@ -1,5 +1,6 @@ package xyz.driver.restquery.rest.parsers +import java.time.LocalDate import java.util.UUID import fastparse.all._ @@ -121,9 +122,16 @@ object SearchFilterParser { UUID.fromString(s"$group1-$group2-$group3-$group4-$group5") } + private val dateParser: Parser[LocalDate] = + P(CharIn('0' to '9').rep(min = 4).! ~ "-" ~ CharIn('0' to '9').rep(1).! ~ "-" ~ CharIn('0' to '9').rep(1).!) + .map { + case (year, month, day) => + LocalDate.of(year.toInt, month.toInt, day.toInt) + } + private val binaryAtomParser: Parser[SearchFilterExpr.Atom.Binary] = P( dimensionParser ~ whitespaceParser ~ - ((numericOperatorParser.! ~ whitespaceParser ~ (longParser | numberParser.!) ~ End) | + ((numericOperatorParser.! ~ whitespaceParser ~ (dateParser | longParser | numberParser.!) ~ End) | (commonOperatorParser.! ~ whitespaceParser ~ (uuidParser | booleanParser | AnyChar .rep(min = 1) .!) ~ End)) @@ -134,7 +142,8 @@ object SearchFilterParser { private val nAryAtomParser: Parser[SearchFilterExpr.Atom.NAry] = P( dimensionParser ~ whitespaceParser ~ ( naryOperatorParser ~ whitespaceParser ~ - ((uuidParser.rep(min = 1, sep = ",") ~ End) | + ((dateParser.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)) |