getAndUpdate method

  1. @override
Future<DatabaseData?> getAndUpdate(
  1. String key,
  2. QueryParams queryParams,
  3. DateTime lastUsedAt
)
override

Get and udpate data in storage

The retrieved data is associated to both the key and queryParams. The data should also be updated with the provided lastUsedAt datetime.

Implementation

@override
Future<DatabaseData?> getAndUpdate(
  String key,
  QueryParams queryParams,
  DateTime lastUsedAt,
) async {
  DatabaseData? dbData;
  final db = await _getDb();

  await db.transaction((txn) async {
    final maps = await _queryByKeyAndParams(txn, key, queryParams);
    if (maps.isNotEmpty) {
      dbData = DatabaseData.fromJson(maps.first);
      final newDbData = dbData!.copyWith(
        lastUsedAt: lastUsedAt,
        useCount: dbData!.useCount + 1,
      );
      await _updateData(txn, newDbData);
    }
  });

  return dbData;
}