pushDelta method
Future<void>
pushDelta({
- required String collection,
- required String recordId,
- required Map<
String, dynamic> delta, - required int baseVersion,
- required DateTime timestamp,
override
Push delta (partial update) to backend.
Only sends changed fields instead of the entire document, reducing bandwidth by up to 98%.
Parameters:
collection: Collection namerecordId: Document IDdelta: Only the fields that changedbaseVersion: Version before this updatetimestamp: When the update occurred
If the backend doesn't support delta sync, this should fall back to a regular push() with the full document.
Implementation
@override
Future<void> pushDelta({
required String collection,
required String recordId,
required Map<String, dynamic> delta,
required int baseVersion,
required DateTime timestamp,
}) async {
try {
// ignore: deprecated_member_use
await databases.updateDocument(
databaseId: databaseId,
collectionId: collection,
documentId: recordId,
data: {'data': delta, 'updated_at': timestamp.toIso8601String()},
);
} catch (e) {
// ignore: deprecated_member_use
await databases.createDocument(
databaseId: databaseId,
collectionId: collection,
documentId: recordId,
data: {
'data': delta,
'updated_at': timestamp.toIso8601String(),
'version': 1
},
);
}
}