restore method

  1. @override
Future<void> restore(
  1. String key,
  2. AtData value
)
override

Writes value verbatim — no metadata builder, no commit-log append, no change event. See AtKeyValueStore.restore. Used by the persistence migrator to reproduce a source keystore's records exactly (preserving createdAt/updatedAt/version and every other field).

Implementation

@override
Future<void> restore(String key, AtData value) async {
  key = key.toLowerCase();
  final atKey = AtKey.getKeyType(key, enforceNameSpace: false);
  if (atKey == KeyType.invalidKey) {
    logger.warning('Key $key is invalid');
    throw InvalidAtKeyException('Key $key is invalid');
  }
  String hiveKey = HiveKeyStoreHelper.prepareKey(key);
  _checkMaxLength(hiveKey);
  try {
    await getBox().put(hiveKey, value);
    _updateMetadataCache(key, value.metaData);
  } on Exception catch (exception) {
    logger.severe('HiveAtKeyValueStore restore exception: $exception');
    throw DataStoreException('exception in restore: ${exception.toString()}');
  } on HiveError catch (error) {
    await _restartHiveBox(error);
    logger.severe('HiveAtKeyValueStore error: $error');
    throw DataStoreException(error.message);
  }
}