geldata / geldata/gel-python

Syncing an object without a prop/link set alongside an object with it set fetches it

Open
#886 0 comments 0 reactions 0 assignees View on GitHub
bug ORM
Dominant language
Python
Stars
415
Forks
50
PR merge metrics
No merged PRs in 30d

Description

Given a schema:
```edgeql
type A {
val: int64;
};
```

the following code:
```py

original = default.A(val=1)
self.client.save(original)

mirror_1 = self.client.query_required_single(
default.A.select(val=False).limit(1)
)
mirror_2 = self.client.query_required_single(
default.A.select(val=True).limit(1)
)

original.val = 2
self.client.save(original)
self.client.sync(mirror_1, mirror_2)

assert not hasattr(mirror_1, "val") # fail
```

will fail the assertion

see #872 test `test_model_sync_single_prop_06` and `test_model_sync_multi_prop_08` for props
see #881 test `test_model_sync_single_link_04`

Notably, multi-links will not fetch the values when synced with an object with it set, but will if that object had its set value changed:
```py
original = default.A(val=1)
self.client.save(original)

mirror_1 = self.client.query_required_single(
default.A.select(val=False).limit(1)
)
mirror_2 = self.client.query_required_single(
default.A.select(val=True).limit(1)
)

mirror_2.targets = changed_targets_2
self.client.sync(mirror_1, mirror_2)

assert mirror_1.targets._items == [] # fail
```

see #881 test `test_model_sync_multi_link_10`

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.