feat: filter top-level resource with embed filter

This is enabled by adding `!inner` to the embedded resource

/projects?select=*,clients!inner(*)&clients.id=eq.12

This behaviour can be enabled by default with the config option

db-embed-default-join='inner'

Which saves the need for specifying `!inner` on every request.
If this is enabled, the previous behavior can be restored
per request by specifying `!left`  on the embedded resource.

/projects?select=*,clients!left(*)&clients.id=eq.12`

Tested on M20/02M/M2M relationships, views, RPC.
This commit is contained in:
steve-chavez
2021-10-04 13:46:32 -05:00
committed by Steve Chavez
parent bf91187e63
commit ee56dd5db1
27 changed files with 445 additions and 44 deletions
@@ -12,6 +12,7 @@ db-schemas = "provided_through_alias"
db-config = "false"
db-tx-end = "commit"
db-uri = "required"
db-embed-default-join = "left"
jwt-aud = ""
jwt-role-claim-key = ".\"aliased\""
jwt-secret = ""
@@ -12,6 +12,7 @@ db-schemas = "required"
db-config = "false"
db-tx-end = "commit"
db-uri = "required"
db-embed-default-join = "left"
jwt-aud = ""
jwt-role-claim-key = ".\"role\""
jwt-secret = ""
@@ -12,6 +12,7 @@ db-schemas = "required"
db-config = "false"
db-tx-end = "commit"
db-uri = "required"
db-embed-default-join = "left"
jwt-aud = ""
jwt-role-claim-key = ".\"role\""
jwt-secret = ""
@@ -12,6 +12,7 @@ db-schemas = "required"
db-config = "false"
db-tx-end = "commit"
db-uri = "required"
db-embed-default-join = "left"
jwt-aud = ""
jwt-role-claim-key = ".\"role\""
jwt-secret = ""
@@ -12,6 +12,7 @@ db-schemas = "test,other_tenant1,other_tenant2"
db-config = "true"
db-tx-end = "rollback-allow-override"
db-uri = "<REPLACED_WITH_DB_URI>"
db-embed-default-join = "inner"
jwt-aud = "https://otherexample.org"
jwt-role-claim-key = ".\"other\".\"role\""
jwt-secret = "ODERREALLYREALLYREALLYREALLYVERYSAFE"
@@ -12,6 +12,7 @@ db-schemas = "test,tenant1,tenant2"
db-config = "true"
db-tx-end = "commit-allow-override"
db-uri = "<REPLACED_WITH_DB_URI>"
db-embed-default-join = "inner"
jwt-aud = "https://example.org"
jwt-role-claim-key = ".\"a\".\"role\""
jwt-secret = "OVERRIDEREALLYREALLYREALLYREALLYVERYSAFE"
@@ -12,6 +12,7 @@ db-schemas = "multi,tenant,setup"
db-config = "false"
db-tx-end = "rollback-allow-override"
db-uri = "tmp_db"
db-embed-default-join = "inner"
jwt-aud = "https://postgrest.org"
jwt-role-claim-key = ".\"user\"[0].\"real-role\""
jwt-secret = "c2VjdXJpdHl0aHJvdWdob2JzY3VyaXR5"
@@ -12,6 +12,7 @@ db-schemas = "required"
db-config = "true"
db-tx-end = "commit"
db-uri = "required"
db-embed-default-join = "left"
jwt-aud = ""
jwt-role-claim-key = ".\"role\""
jwt-secret = ""