set<T> method

  1. @override
Future<void> set<T>(
  1. String key,
  2. T data, {
  3. Duration? expiration,
  4. int priority = 5,
})
override

保存缓存

Implementation

@override
Future<void> set<T>(
  String key,
  T data, {
  Duration? expiration,
  int priority = 5,
}) async {
  if (_database == null) await initialize();

  final jsonString = jsonEncode(data);
  final size = utf8.encode(jsonString).length;

  final now = DateTime.now();
  final expiresAt = expiration != null
      ? now.add(expiration)
      : now.add(const Duration(days: 365));

  await _database!.insertCache(
    CacheItemsCompanion(
      key: drift.Value(key),
      data: drift.Value(jsonString),
      createdAt: drift.Value(now),
      expiresAt: drift.Value(expiresAt),
      priority: drift.Value(priority),
      size: drift.Value(size),
    ),
  );

  await cleanIfOverLimit();
}