-
Notifications
You must be signed in to change notification settings - Fork 576
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Combined: Support Mixed
data type with collections
#6613
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
kraenhansen
reviewed
Apr 15, 2024
kraenhansen
approved these changes
Apr 15, 2024
kneth
approved these changes
Apr 16, 2024
elle-j
force-pushed
the
lj/collections-in-mixed
branch
from
April 26, 2024 12:58
85ca76a
to
ec9f30f
Compare
elle-j
force-pushed
the
lj/collections-in-mixed
branch
2 times, most recently
from
May 23, 2024 08:53
1dc77cf
to
6ddda98
Compare
* Differentiate use of 'mixedToBinding()' for query arg validation. * Refactor 'mixedFromBinding()' to own function and account for List and Dictionary. * Implement setting a flat list and dictionary in Mixed. * Implement accessing a flat list and dictionary in Mixed. * Add tests for storing and accessing flat lists and dictionaries in Mixed. * Refactor helper in test to not rely on collection position. * Add tests for Set in Mixed throwing. * Add tests for updating lists and dictionaries. * Add tests for removing items in lists and dictionaries. * Add tests for filtering lists and dictionaries by path. * Throw if adding a set via property accessors. * Group tests into separate sub-suites. * Guard for embedded objects being set as Mixed value. * Add tests for embedded objects in Mixed throwing. * Add more filtering tests. * Add 'at_keys' query tests to uncomment after Core bug fix. * Add tests for inserting into lists and dictionaries. * Add tests for notifications on lists. * Add tests for notifications on dictionaries. * Add tests for notifications on object when changed prop is list in mixed. * Add tests for invalidating old list and dictionary. * Minor updates to names. * Add tests for notifications on object when changed prop is dictionary in mixed. * Add tests for creating dictionary via object without prototype. * Add tests filtering by query path using IN. * Access array of changes only 1 time in notifications tests. * Remove unnecessary type assertion. * Update schema object names in tests. * Add link to Core bug. * Add tests for default list and dictionary in schema. * Add tests for setting lists and dictionaries outside transaction. * Add tests for spreading Realm and non-Realm objects as Dictionary. * Add unit tests for 'isPOJO()'. * Point to updated Core commit and enable related tests. * Wrap chai's 'instanceOf()' in custom helper to assert type. * Update helper function name to be consistent with other helpers. * Add internal docs for 'isQueryArg'. * Rename unit test file. * Refactor notification tests into 'observable.ts'. * Refactor notification tests to use test context. * Use named import of 'ObjectSchema'. * Group CRUD tests into subsuites.
…ions (#6513) * Move geospatial helper functions to related file. * Implement setting nested lists in Mixed. * Implement setting nested dictionaries in Mixed. * Implement getting nested lists in Mixed. * Implement getting nested dictionaries in Mixed. * Test creating and accessing nested lists and dicts. * Make previous flat collections tests use the new 'expect' function. * Test that max nesting level throws. * Delegate throwing when using a Set to 'mixedToBinding()'. * Implement setting nested collections on a dictionary via setter. * Test nested collections on dictionary via setter. * Minor update to names of tests. * Combine nested and flat collections tests into same suite. * Implement setting nested collections on a list via setter. * Test nested collections on list via setter. * Refactor common test logic to helper functions. * Optimize property setter for hot-path and use friendlier err msg. * Refactor test helper function to build collections of any depth. * Implement inserting nested collections on a list via 'push()'. * Test nested collections on a list via 'push()'. * Test updating dictionary entry to nested collections via setter. * Test updating nested list/dictionary item via setter. * Test removing items from collections via 'remove()'. * Test object notifications when modifying nested collections. * Group previous notification tests into one test. * Group collection notifications tests into 'List' and 'Dictionary'. * Test collection notifications when modifying nested collections. * Remove collections from test context. * Test filtering by query path on nested collections. * Align object schema property names in tests. * Test filtering with int at_type. * Implement setting nested collections on a dictionary via 'set()' overloads. * Test JS Array method 'values()'. * Test JS Array method 'entries()'. * Implement getting nested collections on dictionary 'values()' and 'entries()'. * Test 'values()' and 'entries()' on dictionary with nested collections. * Remove unnecessary 'fromBinding()' calls. * Refactor collection helpers from 'PropertyHelpers' into the respective collection file. * Introduce list/dict sentinels to circumvent extra Core access. * Rename getter to default. * Remove redundant 'snapshotGet'. * Add abstract 'get' and 'set' to 'OrderedCollection'. * Rename the collection helpers to 'accessor'. * Move tests into subsuites. * Fix 'Results.update()'. * Support nested collections in 'pop()', 'shift()', 'unshift()', 'splice()'. * Test list 'pop()'. * Test list 'shift()'. * Test list 'unshift()'. * Test list 'splice()'. * Return 'not found' for collections searched for in 'indexOf()'. * Test ordered collection 'indexOf()'. * Support list/dict sentinels in JSI. * Test references per access. * Enable skipped tests after Core bug fix. * Point to updated Core. * Fix accessor for non-Mixed top-level collection with Mixed items. * Enable and fix previously skipped test. * Update 'mixed{}'. * Update 'mixed<>'. * Remove now-invalidated test. * Remove unused injectable from Node bindgen template. * Replace if-statements with switch. * Add explicit Results and Set accessors for Mixed. * Adapt to change in Core treating missing keys as null in queries. * Rename insertion function. * Include tests of Dictionary property type with Mixed. * Test reassigning to new collection and self-assignment. * Test mixed * Update 'mixed[]'. * Test results accessor. * Update error messages. * Make accessor helpers an object field rather than spread. * Suggestions for "nested collections in mixed" (#6566) * Fix type bundling issue * Inline functions into "create*Accessor*" functions * Refactored typeHelpers out of accessors * Remove leftover 'Symbol_for' in node-wrapper template. * Test not invalidating new collection. * Remove test for max nesting level. The max nesting level in debug in Core has been updated to be the same as for release. * Remove reliance on issue-fix in certain tests. * Add key path test for object listener on mixed field. * Use '.values()' and '.entries()' in iteration. * Update comments. * Add CHANGELOG entry. --------- Co-authored-by: Kræn Hansen <kraen.hansen@mongodb.com>
elle-j
force-pushed
the
lj/collections-in-mixed
branch
from
May 23, 2024 09:54
6ddda98
to
233948d
Compare
papafe
added a commit
that referenced
this pull request
May 23, 2024
* main: (22 commits) Prepare for vNext (#6677) [12.9.0] Bump version (#6676) Fix performance tests (#6665) Combined: Support `Mixed` data type with collections (#6613) Update expected error messages (#6674) Adding --latest-local to the baas test server CLI (#6673) Upgrade to Realm Core v14.7.0 (#6663) Upgrade @trunk/launcher to v1.3.1 to support Apple's versioning scheme for macOS (#6671) Prepare for vNext (#6669) [12.8.1] Bump version (#6668) Use unreleased core (#6667) Fix realm/react changelog (#6661) Fix GHA error when publishing package release (#6660) Prepend vNext to realm/react changelog. [realm-react-0.7.0] Bump version (#6658) Update OAuth2Helper to remove accessing the stitch prefix (#6659) Fix unresolvable links in API reference docs and remove re-exports (#6646) Prepare for vNext (#6645) [12.8.0] Bump version (#6643) Upgrade to HEAD of Realm Core's master (#6637) ... # Conflicts: # CHANGELOG.md # integration-tests/tests/src/tests/mixed.ts
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What, How & Why?
Note
This feature has already been reviewed. New updates to review:
CHANGELOG.md
.The branch can be merged whenever we want to make a release with this new feature.
Adds support for storing lists and dictionaries (with nested collections) as the underlying value of a
Mixed
property.Sets are not supported as a Mixed value.
Test overview
Click to expand
Brief overview of usage
☑️ ToDos