Wolfgang Walther and GitHub
343e41c51d
Location header improvements( #1475 )
...
* Create location header only on primary key columns, closes https://github.com/PostgREST/postgrest/issues/1461
* Return location header when pk columns not selected, fixes https://github.com/PostgREST/postgrest/issues/1162
2020-07-08 14:36:40 -05:00
steve-chavez
55b4f4fbe7
Fix expired JWTs starting an empty transaction
...
Fixes https://github.com/PostgREST/postgrest/issues/1094 .
Expired JWTs were doing an empty BEGIN/COMMIT in the db.
2020-07-03 17:23:10 -05:00
Steve Chavez and GitHub
0f0d617951
Allow http status override through response.status guc ( #1541 )
...
Fixes https://github.com/PostgREST/postgrest/issues/1525
2020-06-05 13:01:36 -05:00
Remo Rechkemmer and GitHub
48c9ac36b1
Bump nixpkgs and simplify/clean up nix setup ( #1529 )
...
* Refactor tests and fix README
* fix linting hints from new hlint version
* postgrest-style with new nixpkgs-fmt
2020-05-20 21:30:20 -05:00
steve-chavez
10c363b588
Remove PUT restriction for all columns/single row
...
Fixes https://github.com/PostgREST/postgrest/issues/1452 .
The single row restriction can be lifted because the
PUT will consider only the first object of the array.
2020-05-02 11:51:32 -05:00
Robert Vollmert and Steve Chavez
3da5a2875e
Update to protolude 0.3.0
...
The good part is that protolude 0.3.0 builds with GHC 8.10.
The bad part is that this change is a bit painful:
- the default `toS` has changed to no longer convert to and from ByteString
- similarly, `show` no longer outputs ByteString
The changes here are pretty much minimal to keep things compiling; I didn't
see a nice way to work with the new ConvertText class, even though `toUtf8`
seems like it might help if used besides `toS` at just the right spots.
2020-04-23 14:14:21 -05:00
Robert Vollmert and Steve Chavez
79399686db
Remove unused imports (with newer protolude)
...
The changes here are from fixing stack build with LTS 15.8 (GHC 8.8.3)
to be warning-free. Most if not all come from the newer protolude
version, which adds some things like `unwords`.
So to make sure that we don't get unused import warnings with newer
stackage, this both raises the protolude lower bound and removes
these imports.
2020-04-16 11:10:24 -05:00
Wolfgang Walther and GitHub
c524531784
Fix overloaded computed columns on RPC ( #1473 )
...
* fix some typos and spelling
* fix pg_source CTE name should be prefixed with pgrst_
* added tests for overloaded computed columns on patch calls
2020-04-06 14:04:55 -05:00
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 and GitHub
0f8838623b
Fix empty headers being added on POST/PATCH/DELETE ( #1458 )
2020-03-13 11:02:38 -05:00
steve-chavez
b75e7cef90
Change server-proxy-uri 2 openapi-server-proxy-uri
...
The server-proxy-uri config option mislead into thinking it was a
web server global setting when it's only related to OpenAPI.
2020-02-02 15:23:32 -05:00
steve-chavez
9b1224827a
Allow overriding headers Location,Content-Type,etc
2020-01-21 12:28:05 -05:00
steve-chavez
c7f78fa7fc
Add response.headers on GET/POST/PATCH/PUT/DELETE
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
Dmitry Wagin and Steve Chavez
7f365bf60b
Enforce singular behavior despite Prefer: return ( #1417 )
2019-12-08 01:49:20 -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
337f821e00
refactor: remove parent embed workaround(in #647 )
...
This workaround is no more necessary since the addition of #978 .
* Also add a test for proving parent embeds offset is consistent
with other types of embeds.
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
50f2cc16ab
refactor: rm schema arg from QueryBuilder funcs
...
* Change TableName to QualifiedIdentifier in ReadQuery
and MutateQuery.
* Move removeSourceCTESchema to DbRequestBuilder.
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-chavez
0183d32c7f
refactor: Remove DbRequest type
...
This type only adds an extra constructor.
2019-09-28 13:45:18 -05:00
steve-chavez
81e5a62f25
refactor: remove fromJust in DbRequestBuilder
...
* Also comment and reorganize 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
200540dfc3
refactor: put callProc core query to QueryBuilder
...
* Move set local queries to QueryBuilder
* Move unquoted to Middleware
2019-09-11 12:01:41 -05:00
steve-chavez
3c00f46e36
refactor: Move statements logic to own module
...
* Move gucHeader decoding to Statements
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
Dan Amoroso and Steve Chávez
f5cef205f1
Introduced raw-media-types config option ( #1349 )
...
* extracted rawOutputTypes to config variable raw-output-media-types
* removed CTTextHtml from Types.hs
2019-07-22 23:37:53 +00: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
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
2044f77d49
Fix #1273 , don't ignore RPC arguments by default
...
* Add different error message for pg 9.4
2019-04-19 16:03:42 -05:00
steve-chavez
033ee5a06e
Refactor: remove pjKeys from RawJSON
2019-04-19 16:03:42 -05:00
Xavier Francisco and Steve Chávez
553531711b
Fix wrong status 404 when PATCH request didn't change anything ( #1272 )
2019-04-19 13:50:19 -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
3946dfbc64
Remove pjIsEmpty and rm pjType from ActionInvoke
...
* Remove PayloadJSON from Insert/Update
2019-02-26 11:38:21 -05:00
steve-chavez
16059ad470
Remove pjType from ActionCreate
...
* Remove isSingle from ActionCreate
* Remove nRows from ActionCreate
2019-02-26 11:38:21 -05:00
Russell Davies and Steve Chávez
473ac70789
Add support for parsing JSON Web Key Sets
2018-11-13 13:58:17 -05:00
steve-chavez
dadfe965b9
Do hlint 2.1 hints
2018-11-06 11:54:10 -05:00
Ben Gamari and Steve Chávez
e0cc4d1571
Update hasql
...
Move to hasql 1.3.
2018-09-28 08:57:26 -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
f033c2c4b5
Add role-claim-key config value
2018-04-30 11:31:06 -05:00
steve-chavez
5c87fe2704
Add getCurrentTime cache for jwt validation
2018-04-30 11:31:06 -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
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