refactor: move escapeIdent function to Identifiers.hs
Moves the functions `escapeIdent` and `trimNullChars` to
SchemaCache/Identifiers.hs module.
Signed-off-by: Taimoor Zaeem <taimoorzaeem@gmail.com>
(cherry picked from commit 66f84c5903)
This commit is contained in:
committed by
Steve Chavez
parent
6150d53592
commit
939061baff
@@ -90,7 +90,8 @@ import PostgREST.RangeQuery (NonnegRange, allRange,
|
|||||||
rangeLimit, rangeOffset)
|
rangeLimit, rangeOffset)
|
||||||
import PostgREST.SchemaCache.Identifiers (FieldName,
|
import PostgREST.SchemaCache.Identifiers (FieldName,
|
||||||
QualifiedIdentifier (..),
|
QualifiedIdentifier (..),
|
||||||
RelIdentifier (..))
|
RelIdentifier (..),
|
||||||
|
escapeIdent, trimNullChars)
|
||||||
import PostgREST.SchemaCache.Routine (MediaHandler (..),
|
import PostgREST.SchemaCache.Routine (MediaHandler (..),
|
||||||
Routine (..),
|
Routine (..),
|
||||||
funcReturnsScalar,
|
funcReturnsScalar,
|
||||||
@@ -163,9 +164,6 @@ pgBuildArrayLiteral vals =
|
|||||||
pgFmtIdent :: Text -> SQL.Snippet
|
pgFmtIdent :: Text -> SQL.Snippet
|
||||||
pgFmtIdent x = SQL.sql . encodeUtf8 $ escapeIdent x
|
pgFmtIdent x = SQL.sql . encodeUtf8 $ escapeIdent x
|
||||||
|
|
||||||
escapeIdent :: Text -> Text
|
|
||||||
escapeIdent x = "\"" <> T.replace "\"" "\"\"" (trimNullChars x) <> "\""
|
|
||||||
|
|
||||||
-- Only use it if the input comes from the database itself, like on `jsonb_build_object('column_from_a_table', val)..`
|
-- Only use it if the input comes from the database itself, like on `jsonb_build_object('column_from_a_table', val)..`
|
||||||
pgFmtLit :: Text -> Text
|
pgFmtLit :: Text -> Text
|
||||||
pgFmtLit x =
|
pgFmtLit x =
|
||||||
@@ -176,9 +174,6 @@ pgFmtLit x =
|
|||||||
then "E" <> slashed
|
then "E" <> slashed
|
||||||
else slashed
|
else slashed
|
||||||
|
|
||||||
trimNullChars :: Text -> Text
|
|
||||||
trimNullChars = T.takeWhile (/= '\x0')
|
|
||||||
|
|
||||||
-- |
|
-- |
|
||||||
-- Format a list of identifiers and separate them by commas.
|
-- Format a list of identifiers and separate them by commas.
|
||||||
--
|
--
|
||||||
|
|||||||
@@ -42,11 +42,11 @@ import NeatInterpolation (trimming)
|
|||||||
import PostgREST.Config (AppConfig (..))
|
import PostgREST.Config (AppConfig (..))
|
||||||
import PostgREST.Config.Database (TimezoneNames,
|
import PostgREST.Config.Database (TimezoneNames,
|
||||||
toIsolationLevel)
|
toIsolationLevel)
|
||||||
import PostgREST.Query.SqlFragment (escapeIdent)
|
|
||||||
import PostgREST.SchemaCache.Identifiers (FieldName,
|
import PostgREST.SchemaCache.Identifiers (FieldName,
|
||||||
QualifiedIdentifier (..),
|
QualifiedIdentifier (..),
|
||||||
RelIdentifier (..),
|
RelIdentifier (..),
|
||||||
Schema, isAnyElement)
|
Schema, escapeIdent,
|
||||||
|
isAnyElement)
|
||||||
import PostgREST.SchemaCache.Relationship (Cardinality (..),
|
import PostgREST.SchemaCache.Relationship (Cardinality (..),
|
||||||
Junction (..),
|
Junction (..),
|
||||||
Relationship (..),
|
Relationship (..),
|
||||||
|
|||||||
@@ -8,8 +8,10 @@ module PostgREST.SchemaCache.Identifiers
|
|||||||
, Schema
|
, Schema
|
||||||
, TableName
|
, TableName
|
||||||
, dumpQi
|
, dumpQi
|
||||||
|
, escapeIdent
|
||||||
, isAnyElement
|
, isAnyElement
|
||||||
, toQi
|
, toQi
|
||||||
|
, trimNullChars
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import qualified Data.Aeson as JSON
|
import qualified Data.Aeson as JSON
|
||||||
@@ -46,6 +48,12 @@ toQi txt = case T.drop 1 <$> T.breakOn "." txt of
|
|||||||
(i, "") -> QualifiedIdentifier mempty i
|
(i, "") -> QualifiedIdentifier mempty i
|
||||||
(s, i) -> QualifiedIdentifier s i
|
(s, i) -> QualifiedIdentifier s i
|
||||||
|
|
||||||
|
escapeIdent :: Text -> Text
|
||||||
|
escapeIdent x = "\"" <> T.replace "\"" "\"\"" (trimNullChars x) <> "\""
|
||||||
|
|
||||||
|
trimNullChars :: Text -> Text
|
||||||
|
trimNullChars = T.takeWhile (/= '\x0')
|
||||||
|
|
||||||
type Schema = Text
|
type Schema = Text
|
||||||
type TableName = Text
|
type TableName = Text
|
||||||
type FieldName = Text
|
type FieldName = Text
|
||||||
|
|||||||
Reference in New Issue
Block a user