Skip to content

Commit 196c193

Browse files
committed
Updated: Local Storage
Updated: made message nullable Updated: response class Updated: readability Added: local storage extendable class Updated: return type Updated: flow of parameter passing
1 parent 259ad86 commit 196c193

File tree

6 files changed

+207
-61
lines changed

6 files changed

+207
-61
lines changed
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
import '../storage_response.dart';
2+
import 'storage.dart';
3+
4+
/// [LocalStorageExtendable] can be extended to have more class features other than the available
5+
/// features.
6+
///
7+
/// Example:
8+
///
9+
/// ```dart
10+
/// class ELS extends LocalStorageExtendable {
11+
/// void myFunction(){
12+
/// // logic
13+
/// }
14+
/// }
15+
///
16+
/// final ELS els = ELS();
17+
///
18+
/// void useCase(){
19+
/// final response = await els.create(
20+
/// collectionName: 'posts',
21+
/// key: 'key',
22+
/// value: 'value',
23+
/// ); // existing method
24+
///
25+
/// final newResponse = await els.myFuction(); // added method
26+
/// }
27+
///
28+
/// ```
29+
class LocalStorageExtendable {
30+
static const String defaultCollectionName = 'vaah-fluter-box';
31+
32+
StorageResponse add(String collectionName) {
33+
return LocalStorage.add(collectionName);
34+
}
35+
36+
Future<StorageResponse> create({
37+
String collectionName = defaultCollectionName,
38+
required String key,
39+
required String value,
40+
}) {
41+
return LocalStorage.create(key: key, value: value);
42+
}
43+
44+
Future<StorageResponse> createMany({
45+
String collectionName = defaultCollectionName,
46+
required Map<String, String> values,
47+
}) {
48+
return LocalStorage.createMany(values: values);
49+
}
50+
51+
Future<StorageResponse> read({
52+
String collectionName = defaultCollectionName,
53+
required String key,
54+
}) {
55+
return LocalStorage.read(collectionName: collectionName, key: key);
56+
}
57+
58+
Future<StorageResponse> readMany({
59+
String collectionName = defaultCollectionName,
60+
required List<String> keys,
61+
}) {
62+
return LocalStorage.readMany(keys: keys);
63+
}
64+
65+
Future<StorageResponse> readAll({String collectionName = defaultCollectionName}) {
66+
return LocalStorage.readAll(collectionName: collectionName);
67+
}
68+
69+
Future<StorageResponse> update({
70+
String collectionName = defaultCollectionName,
71+
required String key,
72+
required String value,
73+
}) {
74+
return LocalStorage.update(key: key, value: value);
75+
}
76+
77+
Future<StorageResponse> updateMany({
78+
String collectionName = defaultCollectionName,
79+
required Map<String, String> values,
80+
}) {
81+
return LocalStorage.updateMany(values: values);
82+
}
83+
84+
Future<StorageResponse> createOrUpdate({
85+
String collectionName = defaultCollectionName,
86+
required String key,
87+
required String value,
88+
}) {
89+
return LocalStorage.createOrUpdate(key: key, value: value);
90+
}
91+
92+
Future<StorageResponse> createOrUpdateMany({
93+
String collectionName = defaultCollectionName,
94+
required Map<String, String> values,
95+
}) {
96+
return LocalStorage.createOrUpdateMany(values: values);
97+
}
98+
99+
Future<StorageResponse> delete(
100+
{String collectionName = defaultCollectionName, required String key}) {
101+
return LocalStorage.delete(collectionName: collectionName, key: key);
102+
}
103+
104+
Future<StorageResponse> deleteMany({
105+
String collectionName = defaultCollectionName,
106+
List<String> keys = const [],
107+
}) {
108+
return LocalStorage.deleteMany(keys: keys);
109+
}
110+
111+
Future<StorageResponse> deleteAll({String collectionName = defaultCollectionName}) {
112+
return LocalStorage.deleteAll(collectionName: collectionName);
113+
}
114+
}

lib/vaahextendflutter/services/storage/local/services/base_service.dart

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,38 +4,50 @@ abstract class LocalStorageService {
44
StorageResponse add(String collectionName);
55

66
Future<StorageResponse> create({
7-
String collectionName,
7+
required String collectionName,
88
required String key,
99
required String value,
1010
});
1111

12-
Future<StorageResponse> createMany({String collectionName, required Map<String, String> values});
12+
Future<StorageResponse> createMany({
13+
required String collectionName,
14+
required Map<String, String> values,
15+
});
1316

14-
Future<StorageResponse> read({String collectionName, required String key});
17+
Future<StorageResponse> read({required String collectionName, required String key});
1518

16-
Future<StorageResponse> readMany({String collectionName, required List<String> keys});
19+
Future<StorageResponse> readMany({required String collectionName, required List<String> keys});
1720

18-
Future<StorageResponse> readAll({String collectionName});
21+
Future<StorageResponse> readAll({required String collectionName});
1922

20-
Future<StorageResponse> update(
21-
{String collectionName, required String key, required String value});
23+
Future<StorageResponse> update({
24+
required String collectionName,
25+
required String key,
26+
required String value,
27+
});
2228

23-
Future<StorageResponse> updateMany({String collectionName, required Map<String, String> values});
29+
Future<StorageResponse> updateMany({
30+
required String collectionName,
31+
required Map<String, String> values,
32+
});
2433

2534
Future<StorageResponse> createOrUpdate({
26-
String collectionName,
35+
required String collectionName,
2736
required String key,
2837
required String value,
2938
});
3039

3140
Future<StorageResponse> createOrUpdateMany({
32-
String collectionName,
41+
required String collectionName,
3342
required Map<String, String> values,
3443
});
3544

36-
Future<StorageResponse> delete({String collectionName, required String key});
45+
Future<StorageResponse> delete({required String collectionName, required String key});
3746

38-
Future<StorageResponse> deleteMany({String collectionName, List<String> keys = const []});
47+
Future<StorageResponse> deleteMany({
48+
required String collectionName,
49+
List<String> keys = const [],
50+
});
3951

40-
Future<StorageResponse> deleteAll({String collectionName});
52+
Future<StorageResponse> deleteAll({required String collectionName});
4153
}

lib/vaahextendflutter/services/storage/local/services/flutter_secure_storage.dart

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,12 @@ class LocalStorageWithFlutterSecureStorage implements LocalStorageService {
3939
}
4040
try {
4141
await _storage.write(key: key, value: value);
42-
return StorageResponse(
43-
data: value,
44-
message: 'Entry created with key: "$key"',
45-
);
42+
return StorageResponse(data: value, message: 'Entry created with key: "$key"');
4643
} catch (e) {
4744
return StorageResponse(
4845
errors: [
4946
StorageError(
50-
message: 'Failed to create entry at key: "$key".',
47+
message: 'Failed to create entry at key: "$key": $e',
5148
failedKey: key,
5249
stackTrace: StackTrace.current,
5350
),
@@ -258,9 +255,8 @@ class LocalStorageWithFlutterSecureStorage implements LocalStorageService {
258255
if (result.hasData) {
259256
remainigEntries--;
260257
success.add(result.data);
261-
} else if (result.hasError) {
262-
errors.add(result.errors!.first);
263258
}
259+
errors.add(result.errors!.first);
264260
}
265261
if (errors.isEmpty) {
266262
return StorageResponse(data: success, message: 'Set all given entries.');
@@ -289,7 +285,7 @@ class LocalStorageWithFlutterSecureStorage implements LocalStorageService {
289285
}
290286
try {
291287
await _storage.delete(key: key);
292-
return StorageResponse(data: key, message: 'Deleted value at key: $key');
288+
return StorageResponse(message: 'Deleted value at key: $key', isSuccess: true);
293289
} catch (e) {
294290
final error = StorageError(
295291
failedKey: key,
@@ -308,28 +304,25 @@ class LocalStorageWithFlutterSecureStorage implements LocalStorageService {
308304
if (keys.isNotEmpty) {
309305
int remainingKeys = keys.length;
310306
List<StorageError> errors = [];
311-
List<String> success = [];
312307
for (String k in keys) {
313308
final result = await delete(collectionName: collectionName, key: k);
314309
if (result.hasData) {
315-
success.add(result.data);
316310
remainingKeys--;
317-
} else if (result.hasError) {
318-
errors.add(result.errors!.first);
319311
}
312+
errors.add(result.errors!.first);
320313
}
321314
if (errors.isEmpty) {
322315
return StorageResponse(
323-
data: success,
324316
message: 'Deleted multiple entries with associated keys: $keys',
317+
isSuccess: true,
325318
);
326319
} else if (remainingKeys == keys.length) {
327320
return StorageResponse(errors: errors);
328321
}
329322
return StorageResponse(
330-
data: success,
331323
message: 'Deleted ${keys.length - remainingKeys}/${keys.length}',
332324
errors: errors,
325+
isSuccess: true,
333326
);
334327
}
335328
return StorageResponse(
@@ -347,11 +340,11 @@ class LocalStorageWithFlutterSecureStorage implements LocalStorageService {
347340
Future<StorageResponse> deleteAll({String collectionName = ''}) async {
348341
try {
349342
await _storage.deleteAll();
350-
return const StorageResponse(data: null, message: 'Deleted all entries.');
343+
return const StorageResponse(message: 'Deleted all entries.', isSuccess: true);
351344
} catch (e) {
352345
return StorageResponse(errors: [
353346
StorageError(
354-
message: e.toString(),
347+
message: 'Delete failed: ${e.toString()}',
355348
failedKey: '',
356349
stackTrace: StackTrace.current,
357350
)

0 commit comments

Comments
 (0)