691bb5640d
Allow multiple schemas to be exposed in one instance ( #1450 )
...
The schema to use can be selected through the headers `Accept-Profile` for GET/HEAD and `Content-Profile` for POST/PATCH/PUT/DELETE.
This is based on the https://www.w3.org/TR/dx-prof-conneg/ttps://www.w3.org/TR/dx-prof-conneg/ spec.
Also increase all memory tests by 1M(otherwise CI fails).
Co-authored-by: Mahmoud Kassem <MKassem@gk-software.com >
Co-authored-by: Mahmoud Kassem <mahmoud_k@mail.com >
2020-03-30 14:04:20 -05:00
steve-chavez
7dade7f466
Add request method and path GUCs
2020-01-21 12:28:05 -05:00
steve-chavez
b20e1150a5
Add GUC for accessing the Authorization header
2020-01-21 12:28:05 -05:00
YUKISHITA Yohsuke and Steve Chavez
99b13fa25f
Upsert with "Prefer: resolution=merge-duplicates" on specified columns ( #1327 ) ( #1432 )
...
Allow query param 'on_conflict=key1,key2,...' to upsert with explicit columns with unique
constraint.
2019-12-29 11:52:58 -05:00
steve-chavez
ed2bfc09a6
Allow PATCH/DELETE w/o Prefer when no SELECT privs
...
PATCH/DELETE can now be done without adding Prefer return=minimal when
the user doesn't have SELECT privileges.
* Also fix PATCH wrong HTTP status code
2019-10-08 12:41:39 -05:00
steve-chavez
1173bc277b
refactor: rm configSchema ref in postgrest func
...
* make TargetDefaultSpec take a schema attribute
* remove schema param from addJoinConditions
2019-10-08 12:41:39 -05:00
steve-chavez
f080159268
refactor: add the returningCols function
...
* separate fieldNames from getting fkCols
* Put binaryField inside readSqlParts
* Move scalar proc logic to binaryField
* Move logic for the "SELECT *" default to DbRequestBuilder
2019-09-28 13:45:18 -05:00
Steve Chávez and GitHub
186381bab2
Add support for Prefer: count=planned/estimated on GET /table ( #1386 )
2019-09-18 10:13:48 -05:00
steve-chavez
e044488f73
Make costly bulk call query optional
...
Bulk Call should be used by specifying
the `Prefer: params=multiple-objects` header.
2019-09-11 12:01:41 -05:00
steve-chavez
620721dea7
Add support for HEAD request
2019-09-03 13:38:53 -05:00
steve-chavez
e21b010c6e
refactor: reorganize modules
...
* Move range logic from App to RangeQuery
* Move decoder logic to Statement modules
* Move location headers logic to functions
* Add a comment for App.hs module
2019-09-03 13:38:53 -05:00
steve-chavez
ae9e27a0c7
Fix #1348 , go back to converting plus "+" to space
...
Not doing this conflicts with some http clients and proxies.
Use the alternative url-safe character '!' instead for
disambiguating resource embedding.
2019-08-21 10:34:28 -05:00
Steve Chávez and GitHub
ea7d747107
Accept text/plain and text/html for raw output ( #1330 )
2019-06-21 11:51:54 -05:00
Steve Chávez and GitHub
1df749a7a8
Add option for overriding root spec ( #1317 )
...
* Only for pg >= 9.6
* Disallow specifying schema on root-spec
* Increase memory test upper bound
2019-06-10 13:45:50 -05:00
Robert and Steve Chávez
33532cfbb6
Fix hlint warnings for hlint v2.1.20 ( #1320 )
...
* Apply some hlint suggestions.
* Simplify config parser (to avoid hlint error)
* Reorganize for clarity (and fix hlint error)
* Remove redundant language extension
* Reformat slice more conventionally to avoid hlint bug
* Refactor for clarity (and to avoid hlint error)
* Simplify (and avoid hlint error)
* Fix hlint complaint
2019-06-08 20:52:48 -05:00
Xavier Francisco and Steve Chávez
28b3d6cafd
Update stylish haskell config; apply all; add CI config ( #1299 )
...
* Update config default; Copy non-defaults
* Update .stylish-haskell config version to match pgrst
* Apply stylish haskell to all files
* CircleCI config
* Remove redundant import.
What is used from Network.HTTP.Types.Headers is also exported by Network.HTTP.Types.
* Grouped imports
* Show un-styled files on CircleCI failure
* Fix styling imports
* Apply adhoc standard correctly
2019-05-23 10:44:34 -05:00
Xavier Francisco and Steve Chávez
1cf54e6575
Small refactor around error responses and more tests ( #1282 )
...
* Fix #880 , Clean and consolidate error responses
* Fix #1285 , Abort on fatal errors
* Add / Detail tests
2019-05-22 09:30:33 -05:00
steve-chavez
3c7738a8c7
Deprecate '.' for disambiguating resource embedding
...
'+' should be used instead.
2019-05-19 13:18:03 -05:00
steve-chavez
033ee5a06e
Refactor: remove pjKeys from RawJSON
2019-04-19 16:03:42 -05:00
steve-chavez
c9b2830e52
Fix #690 , add columns query arg for RPC/POST/PATCH
...
* Refactor normalizing json CTE
* Refactor CTE to use CASE instead of UNION
2019-02-26 11:38:21 -05:00
steve-chavez
dadfe965b9
Do hlint 2.1 hints
2018-11-06 11:54:10 -05:00
Felix Yan and Steve Chávez
9ea7529f30
Use protolude 0.2.2, replace undefined with witness
...
protolude provides headMay since 0.2.2, it can be used instead of safe.
2018-05-28 13:08:27 -05:00
steve-chavez
108f3cd651
Add Preference-Applied header for POST upsert
...
- Ensure creating nothing on ignore-duplicates succeeds
- Refactor locationF query
2018-02-21 07:33:54 -05:00
steve-chavez
6675821c64
Allow PUT method: UPSERT of a single row
2018-02-21 07:33:54 -05:00
steve-chavez
85b1dc0eb4
Add UPSERT for POST with Prefer:resoultion=merge/ignore-duplicates
2018-02-21 07:33:54 -05:00
steve-chavez
70ce1b9329
Reduce memory usage of uniform json array restriction
2018-01-27 13:55:20 -05:00
steve-chavez
f7e7834a1c
Handle overloaded function case
...
* Add test for params=single-object on GET
* Add tests for procs with DEFAULT args
* Add tests for overloaded functions
* Add test for PATCHing with an empty json array, this previously
gave a "Something is wrong" error
2018-01-10 11:43:16 -05:00
steve-chavez
38f3bcf4a6
Reduce memory usage by avoiding Aeson encode
...
It was detected that Aeson encoding had high memory usage when
the json payload was large, around x60 the payload size.
With this change we get around x10 payload size memory usage.
The encodeUtf8(when doing a Text -> ByteString with `toS`) function
on a large payload also contributed to the high memory usage.
Main idea to reduce the memory usage was to let the ByteString coming
from the request body go to the database unchanged.
2018-01-10 11:43:16 -05:00
steve-chavez
be630aa680
Change phrase/plain full text search syntax
2017-11-27 11:38:54 -05:00
Steve Chávez and Joe Nelson
a6cce691b5
Fix RPC GET filters bugs with not/{plain,phrase}fts operators ( #980 )
2017-09-26 20:07:36 -07:00
Steve Chávez and Joe Nelson
cf19ad0369
Allow GET on RPC ( #946 )
2017-09-17 11:16:46 -05:00
SteveBash and Joe Nelson
b8eb2cd9c1
Add and/or params for complex boolean logic
...
* Add support for and/or params in GET, POST, PATCH and DELETE
* Restrict usage of IN in and/or to be inside parens e.g. in.(1,2,3)
* Allow quoting operators for values that have ',)' chars
inside and/or e.g. eq."(entity,1)"
2017-05-13 16:49:25 -05:00
Ruslan Talpa and Joe Nelson
5fffbbe381
Make HTTP headers available as GUCs #800 ( #849 )
2017-04-10 19:23:48 -05:00
Marios Koulakis and Joe Nelson
9b4b45671c
Accept empty string as empty json body when calling an rpc ( #832 )
2017-03-27 21:34:03 -07:00
Diogo Biazus and Joe Nelson
206ab163b6
Refactor error type and fix nested error message [ fix #791 ] ( #829 )
2017-03-12 22:02:13 -07:00
Steve Chávez and Joe Nelson
98438c437f
Proposal for binary output ( #802 )
2017-02-14 20:36:51 -08:00
Joe Nelson and GitHub
104a7ed4fa
Use a mime type to request singular JSON responses ( #763 )
2017-01-16 15:11:37 -08:00
Diogo Biazus
6c275fcec2
Coalesce types UniformObjects and Payload into the new PayloadJSON
2016-11-27 23:55:26 -05:00
Diogo Biazus
b158b4924e
Use rightToMaybe instead of case
2016-11-27 23:55:14 -05:00
Diogo Biazus
98ada3f9ee
Change nesting of if clause making code more symetrical
2016-11-27 23:55:07 -05:00
Diogo Biazus
090a62a2c8
Removes error case from Payload type. Now we don't build a payload when the parsing fails.
2016-11-27 23:55:02 -05:00
Diogo Biazus
fec769c80e
Move range validation to userApiRequest.
2016-11-27 23:54:52 -05:00
Diogo Biazus
b8ddc30252
Remove ActionInappropriate constructor from type Action since now we validate the request before building an ApiRequest.
2016-11-27 23:54:37 -05:00
Diogo Biazus
47c4fbc8ef
Introduce the type ApiRequestError and make userApiRequest return an Either ApiRequestError ApiRequest
2016-11-27 23:54:23 -05:00
dsimunic and Joe Nelson
ae40641963
Introduce new 'Prefer' header, params=single-object ( #739 )
2016-11-20 14:14:39 -08:00
Diogo Biazus and Joe Nelson
41c1cf6e01
Reduce app function ( #733 )
...
Simplify the big app function
2016-11-10 20:42:00 -08:00
Ruslan Talpa
211e3d4141
fix relation detection bug and allow offset on lower levels
2016-10-05 11:34:07 +03:00
Joe Nelson and GitHub
af75988dd4
No count by default ( #700 )
...
* WIP: disable counting total table size by default
* Remove commented tests since PUT is no longer supported
* Fix tests for invalid range which require count
* Do not report count in PATCH response if not asked
* Return count of deleted items only if asked
* Return count for bulk insert when requested
* Changelog entry
2016-09-04 10:31:24 -07:00
Joe Nelson and GitHub
7278507c42
Use comma rather than semicolon to split header values ( #698 )
2016-08-21 15:26:00 -07:00
Diogo Biazus and Joe Nelson
6f737056a2
Protolude completion in library and executable ( #697 )
2016-08-21 15:10:19 -07:00