Commit Graph
43 Commits
Author SHA1 Message Date
Steve ChávezandJoe Nelson a6cce691b5 Fix RPC GET filters bugs with not/{plain,phrase}fts operators (#980) 2017-09-26 20:07:36 -07:00
Steve ChávezandJoe Nelson cf19ad0369 Allow GET on RPC (#946) 2017-09-17 11:16:46 -05:00
SteveBashandJoe 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 TalpaandJoe Nelson 5fffbbe381 Make HTTP headers available as GUCs #800 (#849) 2017-04-10 19:23:48 -05:00
Marios KoulakisandJoe Nelson 9b4b45671c Accept empty string as empty json body when calling an rpc (#832) 2017-03-27 21:34:03 -07:00
Diogo BiazusandJoe Nelson 206ab163b6 Refactor error type and fix nested error message [fix #791] (#829) 2017-03-12 22:02:13 -07:00
Steve ChávezandJoe Nelson 98438c437f Proposal for binary output (#802) 2017-02-14 20:36:51 -08:00
Joe NelsonandGitHub 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
dsimunicandJoe Nelson ae40641963 Introduce new 'Prefer' header, params=single-object (#739) 2016-11-20 14:14:39 -08:00
Diogo BiazusandJoe 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 NelsonandGitHub 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 NelsonandGitHub 7278507c42 Use comma rather than semicolon to split header values (#698) 2016-08-21 15:26:00 -07:00
Diogo BiazusandJoe Nelson 6f737056a2 Protolude completion in library and executable (#697) 2016-08-21 15:10:19 -07:00
Joe NelsonandGitHub 1d5a0e4316 Per-route content negotiation, and OpenAPI only for root (#693)
* WIP: remove non-openapi root spec

* Refactor ContentType

Different endpoints will favor one type over another

* Permit different Accept headers per endpoint

* Lint

* Add charset to Content-Type only when used as a header

Keep it out of error messages

* Accept: */* is last resort, not first

* Changelog

* makeMimeList consistently

* Remove schema description from OPTIONS response
2016-08-19 16:07:22 -07:00
Erlend HambergandJoe Nelson 35c5b190b4 Singular response for PATCH request (#634)
* Allow a singular entity to be returned from an update

Since a `PATCH` will be an update that could affect many rows, there might be
more than one object returned. By allowing asking for a singular response,
the/an object will be returned instead of a list. This is useful in cases when
the `PATCH` is against single entity (i.e. `/items?pkey=eq.99`).

* Add tests for plurality=singular for `PATCH` requests

* Disallow updating more than one row if `plurality=singular`

As discussed in #634, we don't want to allow updating several rows with
a `PATCH` request when the `Prefer` header specifies
`return=representation;plurality=singular` as this would almost
certainly be a client error.

* Add test for patching multiple objects with singular response

Patching > 1 object with `return=representation;plurality=singular`
should return `400 Bad Request`.

* Only add singleton range for read API requests

* Disallow inserting more than one row if `plurality=singular`

Disallow inserting several rows with a `POST` request when the `Prefer`
header specifies `return=representation;plurality=singular` as this
would almost certainly be a client error.

* Only import `q` from `Text.InterpolatedString.Perl6`

* Update OpenAPI response for PATCH/POST to mention `plurality=singular`

The OpenAPI response for PATCH/POST requests now includes the `Prefer` value
`return=representation;plurality=singular`.

* Add entry in changelog
2016-08-19 14:02:14 -07:00
Diogo Biazus b17fa09393 Add explicit import Prelude to remaining modules to compile and run specs 2016-06-29 09:26:47 -04:00
Diogo Biazus 3308012dcf Add protolude to dependencies, include NoImplicitPrelude in default extensions and port Error module to protolude. 2016-06-29 09:25:57 -04:00
Jacky Hu e88a0577e5 Avoid repeating mime types 2016-06-18 10:18:43 +08:00
Jacky Hu 077bb5a434 Verbose parse error for OpenAPI 2016-06-18 10:18:43 +08:00
Jacky Hu d1ed884a8d Introduce the OpenAPI header
Also bring back the original behavior of GET "/"
2016-06-18 10:18:43 +08:00
Ruslan Talpa 6ebd7fd2d7 implement select/return representation for DELETE queries (fix #518) 2016-06-02 13:37:33 +03:00
Ruslan Talpa dc727f900d suggested cleaup by @begriffs 2016-05-31 14:55:31 +03:00
Ruslan Talpa 7c83edc402 Limit embeded items 2016-05-26 09:56:28 +03:00
Ruslan Talpa 45d0f85b0d ability to order embeded items (closes #509) 2016-05-21 20:52:13 +03:00
Joe Nelson 900b9f1991 Explain use of Left value 2016-05-18 00:06:16 -07:00
Joe Nelson 7e41b620ff Accept POST requests from HTML forms 2016-05-15 20:55:07 -07:00
Joe Nelson 5aadfba84b Use read-only transaction mode for read requests (#561)
* Make middleware use ApiRequest rather than Request

* Fix outdated comments

* Use read-only transaction mode for read requests

This allows API requests against read replicas
2016-04-15 12:26:40 -07:00
Joe Nelson cd81e9346f Do not do table count when plurality=singular
Rebasing commits by @ruslantalpa
2016-03-23 20:30:51 -07:00
Joe Nelson b858626e17 For correctness include charset=utf-8 in responses 2016-03-13 14:22:17 -07:00
Joe Nelson 8b3d224b80 Ensure payload parse errors are not suppressed
Fixes #490
2016-02-11 16:24:02 -08:00
Joe Nelson a0ef4eae4d Issue http 405 for anything but POST on RPC
Fixes #481
2016-02-01 22:52:57 -08:00
Ruslan Talpa 4544ce3255 Fix #399 insert records in tables with no SELECT privileges 2015-12-16 10:16:14 +02:00
Joe Nelson cbbb1871bb Add --max-rows option (no automated tests yet)
Fixes #288
2015-12-05 19:03:18 -08:00
Ruslan Talpa f678dff735 disambiguate range selection when plurality=singular 2015-11-24 09:39:44 +02:00
Ruslan Talpa 50745ad48b Type refactoring (ApiRequest/DbRequest) 2015-11-23 10:12:29 +02:00