aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvlad <vlad@driver.xyz>2017-09-26 13:29:20 -0700
committervlad <vlad@driver.xyz>2017-09-26 13:29:20 -0700
commit41aa4fb74ab5a2ec6521f067fe82472986dfdbd3 (patch)
treedb062f0813301ab9e8c9232e8b01d78a7c1bb516
parent7bb4873042d1bc557a7f2e78b15a44d3ba182bf5 (diff)
downloadrest-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
-rw-r--r--src/main/scala/xyz/driver/pdsuicommon/db/QueryBuilder.scala4
-rw-r--r--src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala2
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/entities/Document.scala4
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)})"