@@ -424,6 +424,7 @@ class LocalStorageWithHive implements LocalStorageService {
424424 String collectionName = 'vaah-flutter-box' ,
425425 List <String > keys = const [],
426426 }) async {
427+ List <StorageError > errors = [];
427428 if (! _collections.containsKey (collectionName)) {
428429 return StorageResponse (
429430 errors: [
@@ -436,15 +437,41 @@ class LocalStorageWithHive implements LocalStorageService {
436437 );
437438 } else {
438439 try {
440+ final List <String > existingKeys = [];
439441 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+ }
440455 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+ }
448475 } else {
449476 return StorageResponse (
450477 errors: [
0 commit comments