From f54742186b0738804d85fafe0659f431f6f6f13b Mon Sep 17 00:00:00 2001 From: Joe Nelson Date: Fri, 20 Nov 2015 10:29:08 -0800 Subject: [PATCH] Use show instances for a shortcut --- src/PostgREST/App.hs | 5 +---- src/PostgREST/QueryBuilder.hs | 16 ++-------------- src/PostgREST/RequestIntent.hs | 6 +++++- src/PostgREST/Types.hs | 11 +++++++++-- 4 files changed, 17 insertions(+), 21 deletions(-) diff --git a/src/PostgREST/App.hs b/src/PostgREST/App.hs index e08885acb..3009a4d8b 100644 --- a/src/PostgREST/App.hs +++ b/src/PostgREST/App.hs @@ -75,10 +75,7 @@ app dbStructure conf reqBody req = let -- TODO: blow up for Left values (there is a middleware that checks the headers) contentType = either (const ApplicationJSON) id (iAccepts intent) - contentTypeS ct = case ct of - ApplicationJSON -> "application/json" - TextCSV -> "text/csv" - contentTypeH = (hContentType, contentTypeS contentType) in + contentTypeH = (hContentType, cs $ show contentType) in case (iAction intent, iTarget intent, iPayload intent) of diff --git a/src/PostgREST/QueryBuilder.hs b/src/PostgREST/QueryBuilder.hs index f2a56d135..72ba5b8b1 100644 --- a/src/PostgREST/QueryBuilder.hs +++ b/src/PostgREST/QueryBuilder.hs @@ -321,20 +321,8 @@ orderF ts = queryTerm :: OrderTerm -> Text queryTerm t = " " <> cs (pgFmtIdent $ otTerm t) <> " " - <> sqlOrderDirection (otDirection t) <> " " - <> maybe "" sqlOrderNulls (otNullOrder t) <> " " - -sqlOrderDirection :: OrderDirection -> SqlFragment -sqlOrderDirection d = - case d of - OrderDesc -> "desc" - OrderAsc -> "asc" - -sqlOrderNulls :: OrderNulls -> SqlFragment -sqlOrderNulls d = - case d of - OrderNullsFirst -> "nulls first" - OrderNullsLast -> "nulls last" + <> (cs.show) (otDirection t) <> " " + <> maybe "" (cs.show) (otNullOrder t) <> " " insertableValue :: JSON.Value -> SqlFragment insertableValue JSON.Null = "null" diff --git a/src/PostgREST/RequestIntent.hs b/src/PostgREST/RequestIntent.hs index f1b369702..d00404b8e 100644 --- a/src/PostgREST/RequestIntent.hs +++ b/src/PostgREST/RequestIntent.hs @@ -32,6 +32,10 @@ data Target = TargetIdent QualifiedIdentifier -- | Enumeration of currently supported content types for -- route responses and upload payloads data ContentType = ApplicationJSON | TextCSV deriving Eq +instance Show ContentType where + show ApplicationJSON = "application/json" + show TextCSV = "text/csv" + -- | When Hasql supports the COPY command then we can -- have a special payload just for CSV, but until -- then CSV is converted to a JSON array. @@ -128,7 +132,7 @@ userIntent schema req reqBody = method = requestMethod req isTargetingProc = fromMaybe False $ (== "rpc") <$> listToMaybe path hdrs = requestHeaders req - qParams = [(cs k, cs <$> v)|(k,v) <- queryString req] + qParams = [(cs k, cs <$> v)|(k,v) <- queryString req] lookupHeader = flip lookup hdrs hasPrefer val = any (\(h,v) -> h == "Prefer" && v == val) hdrs singular = hasPrefer "plurality=singular" diff --git a/src/PostgREST/Types.hs b/src/PostgREST/Types.hs index 02243c20a..0bea9245a 100644 --- a/src/PostgREST/Types.hs +++ b/src/PostgREST/Types.hs @@ -50,8 +50,15 @@ data PrimaryKey = PrimaryKey { , pkName :: Text } deriving (Show, Eq) -data OrderDirection = OrderAsc | OrderDesc deriving (Show, Eq) -data OrderNulls = OrderNullsFirst | OrderNullsLast deriving (Show, Eq) +data OrderDirection = OrderAsc | OrderDesc deriving (Eq) +instance Show OrderDirection where + show OrderAsc = "asc" + show OrderDesc = "desc" + +data OrderNulls = OrderNullsFirst | OrderNullsLast deriving (Eq) +instance Show OrderNulls where + show OrderNullsFirst = "nulls first" + show OrderNullsLast = "nulls last" data OrderTerm = OrderTerm { otTerm :: Text