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.
Most of our SDKs (I've checked Dart and JS) represent
CrudEntry.opData
andCrudEntry.previousValues
as aMap<String, Any?>
. In Kotlin however, we're using aMap<String, String?>
(reported on Discord). This is somewhat unfortunate, as:This PR adds information to construct the type of values in
opData
andpreviousValues
with backwards-compatibility in mind:CrudEntry
constructor is madeinternal
. Users probably weren't invoking it directly though, that's an SDK responsibility.Map<String, String?>
type, this introduces theSqliteRow
interface extending that type, while also providing a getter to get access to typed values.JsonObject
, which we can use in the Supabase connector to upload values unchanged (giving users a serializable object without makingSqliteRow
serializable, which would blow up the framework size).This way, existing reads on the fields still work because we have a
Map<String, String?>
type.