mirror of
https://github.com/pocketbase/pocketbase.git
synced 2025-03-19 22:19:23 +02:00
[#6590] apply nullifyMisingField for request.auth.* and request.body.* back relations when the relation field is pointing to a different collection
This commit is contained in:
parent
4ced91f95d
commit
24c4b63960
@ -22,6 +22,8 @@
|
|||||||
- Bumped the default request read and write timeouts to 5mins (_old 3mins_) to accommodate slower internet connections and larger file uploads/downloads.
|
- Bumped the default request read and write timeouts to 5mins (_old 3mins_) to accommodate slower internet connections and larger file uploads/downloads.
|
||||||
_If you want to change them you can modify the `OnServe` hook's `ServeEvent.ReadTimeout/WriteTimeout` fields as shown in [#6550](https://github.com/pocketbase/pocketbase/discussions/6550#discussioncomment-12364515)._
|
_If you want to change them you can modify the `OnServe` hook's `ServeEvent.ReadTimeout/WriteTimeout` fields as shown in [#6550](https://github.com/pocketbase/pocketbase/discussions/6550#discussioncomment-12364515)._
|
||||||
|
|
||||||
|
- Normalized the `@request.auth.*` and `@request.body.*` back relations resolver to always return `null` when the relation field is pointing to a different collection ([#6590](https://github.com/pocketbase/pocketbase/discussions/6590#discussioncomment-12496581)).
|
||||||
|
|
||||||
- Updatated `modernc.org/sqlite` to 1.36.0 (SQLite 3.49.0).
|
- Updatated `modernc.org/sqlite` to 1.36.0 (SQLite 3.49.0).
|
||||||
|
|
||||||
|
|
||||||
|
@ -479,7 +479,11 @@ func (r *runner) processActiveProps() (*search.ResolverResult, error) {
|
|||||||
}
|
}
|
||||||
return nil, fmt.Errorf("missing back relation field %q", parts[2])
|
return nil, fmt.Errorf("missing back relation field %q", parts[2])
|
||||||
}
|
}
|
||||||
|
|
||||||
if backField.Type() != FieldTypeRelation {
|
if backField.Type() != FieldTypeRelation {
|
||||||
|
if r.nullifyMisingField {
|
||||||
|
return &search.ResolverResult{Identifier: "NULL"}, nil
|
||||||
|
}
|
||||||
return nil, fmt.Errorf("invalid back relation field %q", parts[2])
|
return nil, fmt.Errorf("invalid back relation field %q", parts[2])
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -492,7 +496,11 @@ func (r *runner) processActiveProps() (*search.ResolverResult, error) {
|
|||||||
return nil, fmt.Errorf("failed to initialize back relation field %q", backField.GetName())
|
return nil, fmt.Errorf("failed to initialize back relation field %q", backField.GetName())
|
||||||
}
|
}
|
||||||
if backRelField.CollectionId != collection.Id {
|
if backRelField.CollectionId != collection.Id {
|
||||||
return nil, fmt.Errorf("invalid back relation field %q collection reference", backField.GetName())
|
// https://github.com/pocketbase/pocketbase/discussions/6590#discussioncomment-12496581
|
||||||
|
if r.nullifyMisingField {
|
||||||
|
return &search.ResolverResult{Identifier: "NULL"}, nil
|
||||||
|
}
|
||||||
|
return nil, fmt.Errorf("invalid collection reference of a back relation field %q", backField.GetName())
|
||||||
}
|
}
|
||||||
|
|
||||||
// join the back relation to the main query
|
// join the back relation to the main query
|
||||||
|
@ -601,7 +601,8 @@ func TestRecordFieldResolverResolveCollectionFields(t *testing.T) {
|
|||||||
{"self_rel_many.self_rel_many.self_rel_many.self_rel_many.self_rel_many.self_rel_many.self_rel_many.id", true, ""},
|
{"self_rel_many.self_rel_many.self_rel_many.self_rel_many.self_rel_many.self_rel_many.self_rel_many.id", true, ""},
|
||||||
|
|
||||||
// back relations
|
// back relations
|
||||||
{"rel_one_cascade.demo4_via_title.id", true, ""}, // non-relation via field
|
{"rel_one_cascade.demo4_via_title.id", true, ""}, // not a relation field
|
||||||
|
{"rel_one_cascade.demo4_via_self_rel_one.id", true, ""}, // relation field but to a different collection
|
||||||
{"rel_one_cascade.demo4_via_rel_one_cascade.id", false, "[[demo4_rel_one_cascade_demo4_via_rel_one_cascade.id]]"},
|
{"rel_one_cascade.demo4_via_rel_one_cascade.id", false, "[[demo4_rel_one_cascade_demo4_via_rel_one_cascade.id]]"},
|
||||||
{"rel_one_cascade.demo4_via_rel_one_cascade.rel_one_cascade.demo4_via_rel_one_cascade.id", false, "[[demo4_rel_one_cascade_demo4_via_rel_one_cascade_rel_one_cascade_demo4_via_rel_one_cascade.id]]"},
|
{"rel_one_cascade.demo4_via_rel_one_cascade.rel_one_cascade.demo4_via_rel_one_cascade.id", false, "[[demo4_rel_one_cascade_demo4_via_rel_one_cascade_rel_one_cascade_demo4_via_rel_one_cascade.id]]"},
|
||||||
|
|
||||||
@ -615,8 +616,11 @@ func TestRecordFieldResolverResolveCollectionFields(t *testing.T) {
|
|||||||
// @request.auth relation join
|
// @request.auth relation join
|
||||||
{"@request.auth.rel", false, "[[__auth_users.rel]]"},
|
{"@request.auth.rel", false, "[[__auth_users.rel]]"},
|
||||||
{"@request.auth.rel.title", false, "[[__auth_users_rel.title]]"},
|
{"@request.auth.rel.title", false, "[[__auth_users_rel.title]]"},
|
||||||
|
{"@request.auth.demo1_via_rel_many.id", false, "[[__auth_users_demo1_via_rel_many.id]]"},
|
||||||
{"@request.auth.rel.missing", false, "NULL"},
|
{"@request.auth.rel.missing", false, "NULL"},
|
||||||
{"@request.auth.missing_via_rel", false, "NULL"},
|
{"@request.auth.missing_via_rel", false, "NULL"},
|
||||||
|
{"@request.auth.demo1_via_file_one.id", false, "NULL"}, // not a relation field
|
||||||
|
{"@request.auth.demo1_via_rel_one.id", false, "NULL"}, // relation field but to a different collection
|
||||||
|
|
||||||
// @collection fieds
|
// @collection fieds
|
||||||
{"@collect", true, ""},
|
{"@collect", true, ""},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user