writeRecord method
Implementation
@override
Future<void> writeRecord(DataRecord record) async {
final table = await _ensureTableForWrite(record.collection);
final applied = await _guardingTable(
record.collection,
table,
() => _upsertRecords(table, [record]),
() async => _upsertRecords(
await _ensureTableForWrite(record.collection),
[record],
),
);
if (applied.isEmpty) {
final versions = await _fetchVersions(table, [record.id]);
final existingVersion = versions[record.id];
if (existingVersion != null && existingVersion >= record.version) {
throw RpcDataError.conflict(
'Record ${record.id} in ${record.collection} is at version '
'$existingVersion; incoming ${record.version} is not newer.',
);
}
}
}