fix for generating count query

This commit is contained in:
Ruslan Talpa
2015-09-25 16:33:25 +03:00
parent 2fb5c5187a
commit 3d1736e0d3
+7 -2
View File
@@ -6,7 +6,8 @@ where
import Control.Error import Control.Error
import Data.List (find) import Data.List (find)
import Data.Monoid import Data.Monoid
import Data.Text hiding (find, foldr, head, last, map, null) import Data.Text hiding (filter, find, foldr, head, last, map,
null)
import Data.Tree import Data.Tree
import PostgREST.PgQuery (PStmt, QualifiedIdentifier (..), fromQi, import PostgREST.PgQuery (PStmt, QualifiedIdentifier (..), fromQi,
orderT, pgFmtIdent, pgFmtLit, pgFmtOperator, orderT, pgFmtIdent, pgFmtLit, pgFmtOperator,
@@ -110,9 +111,13 @@ dbRequestToCountQuery (Node (Select mainTable _ _ conditions _ _) _) =
query = Data.Text.unwords [ query = Data.Text.unwords [
"SELECT pg_catalog.count(1)", "SELECT pg_catalog.count(1)",
"FROM ", pgFmtTable mainTable, "FROM ", pgFmtTable mainTable,
("WHERE " <> intercalate " AND " ( map pgFmtCondition conditions )) `emptyOnNull` conditions ("WHERE " <> intercalate " AND " ( map pgFmtCondition localConditions )) `emptyOnNull` localConditions
] ]
emptyOnNull val x = if null x then "" else val emptyOnNull val x = if null x then "" else val
localConditions = filter fn conditions
where
fn (Condition{conValue=VText _}) = True
fn (Condition{conValue=VForeignKey _}) = False
dbRequestToQuery :: DbRequest -> PStmt dbRequestToQuery :: DbRequest -> PStmt
dbRequestToQuery (Node (Select mainTable colSelects tbls conditions _ ord) forest) = dbRequestToQuery (Node (Select mainTable colSelects tbls conditions _ ord) forest) =