Skip to content

Commit 2b87e69

Browse files
author
Daniel Martin
committed
Implemented function 'getWhere()' which helps retrieving the correct items
1 parent 8c1ff71 commit 2b87e69

File tree

5 files changed

+58
-2
lines changed

5 files changed

+58
-2
lines changed

CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
## 0.0.1
22

3-
* TODO: Describe initial release.
3+
Implemented basic functionality
4+
5+
## 0.0.5
6+
7+
Implemented function 'getWhere()' which helps retrieving the correct items

README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,18 @@ A package which provides functionality to store objects inside a temporary cache
44

55
## Getting Started
66

7+
Import the package within your **pubspec.yaml**
8+
9+
```yaml
10+
temp_cache:
11+
```
12+
13+
Then you can use the classes via importing the lib:
14+
15+
``` dart
16+
import 'package:temp_cache/temp_cache.dart';
17+
```
18+
719
Store objects:
820

921
``` dart

lib/cache.dart

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,23 @@ class Cache<T> {
5454
return list;
5555
}
5656

57+
List<T>? getWhere(bool Function(CacheItem<T>) function) {
58+
final items = _cache.where(function);
59+
60+
List<T>? list;
61+
62+
for (final item in items) {
63+
if (_isItemOutdated(item)) {
64+
removeItem(item);
65+
} else {
66+
list ??= [];
67+
list.add(item.item);
68+
}
69+
}
70+
71+
return list;
72+
}
73+
5774
/// Inserts an item with the given key into the cache
5875
void put(String key, T item) {
5976
putWithDuration(key, item, _duration);

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: temp_cache
22
description: A package which provides functionality to store objects inside a temporary cache inside memory
3-
version: 0.0.4
3+
version: 0.0.5
44
homepage: https://github.com/DirtyNative/temp_cache
55

66
environment:

test/temp_cache_test.dart

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,22 @@ void main() {
4848
expect(cache.getAll(), [item3, item2, item1]);
4949
});
5050

51+
test('Get where', () {
52+
final cache = Cache<TestItem2>();
53+
54+
final item1 = TestItem2('1', 10);
55+
final item2 = TestItem2('2', 20);
56+
final item3 = TestItem2('3', 30);
57+
58+
final List<TestItem2> items = [item1, item2, item3];
59+
60+
cache.putMany(items, (item) => item.id);
61+
62+
final retrievedItems = cache.getWhere((item) => item.item.number > 15);
63+
64+
expect(retrievedItems, [item2, item3]);
65+
});
66+
5167
test('Remove item', () {
5268
final cache = Cache<TestItem>();
5369

@@ -70,3 +86,10 @@ class TestItem {
7086

7187
TestItem(this.id);
7288
}
89+
90+
class TestItem2 {
91+
late final String id;
92+
late final int number;
93+
94+
TestItem2(this.id, this.number);
95+
}

0 commit comments

Comments
 (0)