Wolfgang Walther and Wolfgang Walther
2289defe4b
refactor: Use stronger typing for SelectItem parser
...
Signed-off-by: Wolfgang Walther <walther@technowledgy.de >
2022-10-27 21:54:44 +02:00
Steve Chavez and GitHub
0fbb116dd2
add basic ARCHITECTURE.md ( #2503 )
...
* refactor: move ApiRequest a top-level module
* refactor: rename DbStructure to SchemaCache
* refactor: GucHeader inside Response
* refactor: admin app to Workers
2022-10-10 11:24:45 -05:00
Remo Rechkemmer and GitHub
f99fd6cbad
refactor: Split up Types.hs and logically organize modules ( #1793 )
2021-04-11 18:28:01 +02:00
Wolfgang Walther and Wolfgang Walther
ba86b479f8
cov: refactor ApiRequest profile header detection
2021-01-14 16:40:29 +01:00
Wolfgang Walther and Wolfgang Walther
6dd126461e
cov: Remove unused code
2021-01-14 16:40:29 +01:00
Wolfgang Walther and Steve Chavez
dbf99c6ac1
Add support for Prefer tx=rollback
2020-11-22 18:21:06 -05:00
Wolfgang Walther and Steve Chavez
4b4a622a17
fix non-variadic repeated param in variadic function
2020-10-30 10:06:53 -05:00
steve-chavez
8618ffa5fc
perf: shortcut for proc with no variadic arg
...
Also refactor how rpc params are converted to json
2020-10-29 18:53:24 -05:00
steve-chavez
2798ced9b9
Fix charset=utf-8 appending to binary output
2020-10-29 18:53:24 -05:00
Wolfgang Walther and Steve Chavez
302d4e15ad
Allow calling variadic functions with repeated query params or JSON array in body
2020-10-26 17:49:51 -05:00
Wolfgang Walther and Steve Chavez
18cc214c04
refactor moving findProc into ApiRequest to allow parsing parameters differently by proc
2020-10-26 17:49:51 -05:00
Wolfgang Walther and GitHub
6b2767d35c
Additionally allow "bearer" instead of only "Bearer" in Authorization… ( #1558 )
2020-07-16 12:09:40 -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
steve-chavez
9a52632024
Fix Content-Profile not working for POST RPC
...
Accept-Profile was applied instead.
Fixes https://github.com/PostgREST/postgrest/issues/1508 .
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
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