fix for generating count query
This commit is contained in:
@@ -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) =
|
||||||
|
|||||||
Reference in New Issue
Block a user