@@ -424,6 +424,7 @@ class LocalStorageWithHive implements LocalStorageService {
424
424
String collectionName = 'vaah-flutter-box' ,
425
425
List <String > keys = const [],
426
426
}) async {
427
+ List <StorageError > errors = [];
427
428
if (! _collections.containsKey (collectionName)) {
428
429
return StorageResponse (
429
430
errors: [
@@ -436,15 +437,41 @@ class LocalStorageWithHive implements LocalStorageService {
436
437
);
437
438
} else {
438
439
try {
440
+ final List <String > existingKeys = [];
439
441
Box box = await _collections[collectionName]! ;
442
+ for (int i = 0 ; i < keys.length; i++ ) {
443
+ if (! box.containsKey (keys[i])) {
444
+ errors.add (
445
+ StorageError (
446
+ message: 'Key "${keys [i ]}" does not exist in collection "$collectionName "' ,
447
+ failedKey: keys[i],
448
+ stackTrace: StackTrace .current,
449
+ ),
450
+ );
451
+ } else {
452
+ existingKeys.add (keys[i]);
453
+ }
454
+ }
440
455
if (keys.isNotEmpty) {
441
- await box.deleteAll (keys);
442
- return StorageResponse (
443
- data: keys,
444
- message:
445
- 'Deleted multiple entries in collection: $collectionName , associated keys: $keys ' ,
446
- isSuccess: true ,
447
- );
456
+ if (existingKeys.isEmpty) {
457
+ return StorageResponse (errors: errors);
458
+ } else if (existingKeys.length == keys.length) {
459
+ await box.deleteAll (existingKeys);
460
+ return StorageResponse (
461
+ data: keys,
462
+ message:
463
+ 'Deleted multiple entries in collection: $collectionName , associated keys: $keys ' ,
464
+ isSuccess: true ,
465
+ );
466
+ } else {
467
+ await box.deleteAll (existingKeys);
468
+ return StorageResponse (
469
+ data: existingKeys,
470
+ message: 'Deleted ${existingKeys .length }/${keys .length } entries.' ,
471
+ errors: errors,
472
+ isPartialSuccess: true ,
473
+ );
474
+ }
448
475
} else {
449
476
return StorageResponse (
450
477
errors: [
0 commit comments