diff options
author | vlad <vlad@driver.xyz> | 2017-09-26 13:29:20 -0700 |
---|---|---|
committer | vlad <vlad@driver.xyz> | 2017-09-26 13:29:20 -0700 |
commit | 41aa4fb74ab5a2ec6521f067fe82472986dfdbd3 (patch) | |
tree | db062f0813301ab9e8c9232e8b01d78a7c1bb516 /src/main | |
parent | 7bb4873042d1bc557a7f2e78b15a44d3ba182bf5 (diff) | |
download | rest-query-41aa4fb74ab5a2ec6521f067fe82472986dfdbd3.tar.gz rest-query-41aa4fb74ab5a2ec6521f067fe82472986dfdbd3.tar.bz2 rest-query-41aa4fb74ab5a2ec6521f067fe82472986dfdbd3.zip |
Make number filter parsing attempt first, because number parsers are more specific.
Otherwise fails for:
https://records-processing.stable.sand.driver.network/rep-api/v1/document?filters=recordId+EQ+1&pageNumber=1&pageSize=9999
with:
ERROR: operator does not exist: bigint = character varying Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts. Position: 782
Diffstat (limited to 'src/main')
3 files changed, 7 insertions, 3 deletions
diff --git a/src/main/scala/xyz/driver/pdsuicommon/db/QueryBuilder.scala b/src/main/scala/xyz/driver/pdsuicommon/db/QueryBuilder.scala index aa32166..0bf1ed6 100644 --- a/src/main/scala/xyz/driver/pdsuicommon/db/QueryBuilder.scala +++ b/src/main/scala/xyz/driver/pdsuicommon/db/QueryBuilder.scala @@ -57,10 +57,10 @@ sealed trait QueryBuilderParameters { def toSql(countQuery: Boolean, fields: Set[String], namingStrategy: NamingStrategy): (String, QueryBuilder.Binder) = { val escapedTableName = namingStrategy.table(tableData.tableName) val fieldsSql: String = if (countQuery) { - val suffix: String = (tableData.lastUpdateFieldName match { + val suffix: String = tableData.lastUpdateFieldName match { case Some(lastUpdateField) => s", max($escapedTableName.${namingStrategy.column(lastUpdateField)})" case None => "" - }) + } "count(*)" + suffix } else { if (fields == QueryBuilderParameters.AllFields) { diff --git a/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala b/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala index 8aff397..3238ebc 100644 --- a/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala +++ b/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala @@ -93,8 +93,8 @@ object SearchFilterParser { private val binaryAtomParser: Parser[SearchFilterExpr.Atom.Binary] = P( dimensionParser ~ whitespaceParser ~ ( + (numericOperatorParser.! ~/ whitespaceParser ~/ numberParser.!) | (commonOperatorParser.! ~/ whitespaceParser ~/ AnyChar.rep(min = 1).!) - | (numericOperatorParser.! ~/ whitespaceParser ~/ numberParser.!) ) ~ End ).map { case BinaryAtomFromTuple(atom) => atom diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/Document.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/Document.scala index 1f73184..839fead 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/Document.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/Document.scala @@ -14,6 +14,8 @@ import xyz.driver.pdsuicommon.validation.Validators import xyz.driver.pdsuicommon.validation.Validators.Validator import xyz.driver.pdsuidomain.entities.Document.Meta +import scalaz.Equal + final case class ProviderType(id: LongId[ProviderType], name: String) object ProviderType { @@ -124,6 +126,8 @@ object DocumentType { } } + implicit def equal: Equal[DocumentType] = Equal.equal[DocumentType](_ == _) + implicit def toPhiString(x: DocumentType): PhiString = { import x._ phi"DocumentType(id=$id, name=${Unsafe(name)})" |