Create DataStoreQuery type to perform query #23867
Draft
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.
As discussed on Slack, here is the PR for changing the
associatedtype Query
inprotocol DataStore
to a concrete type.I still have the same concerns about this approach, though. There is no straightforward way to create a concrete
Query
type that would support all different kinds of "data store".For example, the existing
enum UserDataStoreQuery
and the newDataStoreQuery
in this PR won't support SQL queries. Vise-versa, If we create a SQL-like query (i.e.,DataStoreQuery.where(key: String, equals: Value)
), we won't be able to support this search with an in-memory dict/list of Swift structs.I'm leaning towards keeping the existing
DataStore
implementation where it does not put any restrictions on the concrete type ofDataStore.Query
. It's up to the specificDataStore
implementation to decide what type ofQuery
it supports. Let me know what you think.Regression Notes
Potential unintended areas of impact
What I did to test those areas of impact (or what existing automated tests I relied on)
What automated tests I added (or what prevented me from doing so)
PR submission checklist:
RELEASE-NOTES.txt
if necessary.Testing checklist: