putAll method
Writes value and metadata for key atomically. Returns
the commit-log sequence number assigned to this write, or
null if no sequence number was produced.
Implementation
@override
Future<int?> putAll(String key, AtData value, AtMetaData? metadata) async {
final k = _validateAndNormalize(key);
final existing = _existsSync(k) ? _getSync(k) : null;
final toStore = AtData()
..data = value.data
..metaData = AtMetadataBuilder(
atSign: atSign,
newAtMetaData: metadata,
existingMetaData: existing?.metaData,
).build();
final result = _db.runInTransaction(() {
_upsertAtData(k, toStore);
return _commitOrNull(k, CommitOp.UPDATE_ALL);
});
_changes.add(existing == null ? KeyAdded(k) : KeyUpdated(k));
return result;
}