create method
Future<int?>
create(
- String key,
- AtData value, {
- bool skipCommit = false,
- AtAssertedTimestamps? assertedTimestamps,
override
Creates key with value. Overrides KeyValueStore.create
with the same skipCommit-purges and assertedTimestamps
extras as put.
Implementation
@override
Future<int?> create(String key, AtData value,
{bool skipCommit = false,
AtAssertedTimestamps? assertedTimestamps}) async {
final k = _validateAndNormalize(key);
_checkMaxLength(k);
final toStore = AtData()
..data = value.data
..metaData = AtMetadataBuilder(
atSign: atSign,
newAtMetaData: value.metaData,
asserted: assertedTimestamps)
.build();
final commitOp = _commitOpForNewWrite(value.metaData);
final result = _db.runInTransaction(() {
_upsertAtData(k, toStore);
if (skipCommit) {
// Purge any previous entry for this key, matching put/remove's
// skipCommit behaviour.
_sqliteCommitLog?.purgeSync(k);
return -1;
}
return _commitOrNull(k, commitOp, opTime: assertedTimestamps?.updatedAt);
});
_changes.add(KeyAdded(k));
return result;
}