-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Labels
difficulty: beginnerPure Haskell taskPure Haskell task
Description
Problem
Currently there's no way to do a partial document update.
- Accept patch format for JSONB -
set.
filter forPATCH
#465 (comment) discusses json patch but there are certain operations (liketest
) which don't make much sense given our horizontal filtering. - An alternative is proposed on Accept patch format for JSONB -
set.
filter forPATCH
#465 (comment), but it's flexibility makes it harder to implement. Additionally it's not isolated to a single content type.
Solution
Use a vendored media type based on json patch where we support the operations we lack. As prior art, azure cosmosdb json patch (also see here) does a similar thing and adds support for increment
and set
, which are not defined in the JSON Patch RFC.
For starters, we can add support for increment. Like so:
PATCH /items?id=eq.1
Content-Type: application/vnd.pgrst.json-patch
[
{ "op": "incr", "path": "/inventory", "value": 10 },
]
Path would refer to any column and the generated SQL would be like UPDATE items SET inventory = inventory + 10
.
Later on we can extend this to add other operations, like mult
, div
, concat
, etc.
JanKaul, hmnd and hf
Metadata
Metadata
Assignees
Labels
difficulty: beginnerPure Haskell taskPure Haskell task