fix: HTTP status responses for upserts
* PUT returns 201 instead of 200 when rows are inserted * POST with "Prefer: resolution=merge-duplicates" returns 200 instead of 201 when no rows are inserted
This commit is contained in:
@@ -24,6 +24,8 @@ module PostgREST.Query.SqlFragment
|
||||
, fromJsonBodyF
|
||||
, responseHeadersF
|
||||
, responseStatusF
|
||||
, addConfigPgrstInserted
|
||||
, currentSettingF
|
||||
, returningF
|
||||
, singleParameter
|
||||
, sourceCTE
|
||||
@@ -433,6 +435,11 @@ responseHeadersF = currentSettingF "response.headers"
|
||||
responseStatusF :: SQL.Snippet
|
||||
responseStatusF = currentSettingF "response.status"
|
||||
|
||||
addConfigPgrstInserted :: Bool -> SQL.Snippet
|
||||
addConfigPgrstInserted add =
|
||||
let (symbol, num) = if add then ("+", "0") else ("-", "-1") in
|
||||
"set_config('pgrst.inserted', (coalesce(" <> currentSettingF "pgrst.inserted" <> "::int, 0) " <> symbol <> " 1)::text, true) <> '" <> num <> "'"
|
||||
|
||||
currentSettingF :: SQL.Snippet -> SQL.Snippet
|
||||
currentSettingF setting =
|
||||
-- nullif is used because of https://gist.github.com/steve-chavez/8d7033ea5655096903f3b52f8ed09a15
|
||||
|
||||
Reference in New Issue
Block a user