Skip to content

Commit c646bc0

Browse files
committed
implemented CoreStoreMemoryImp (default corestore for dart)
1 parent 71bba12 commit c646bc0

File tree

5 files changed

+152
-8
lines changed

5 files changed

+152
-8
lines changed

packages/dart/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ If you want to use secure storage or use the Flutter web/desktop SDK, please cha
3434
await Parse().initialize(
3535
keyParseApplicationId,
3636
keyParseServerUrl,
37-
coreStore: await CoreStoreSembastImp.getInstance());
37+
coreStore: await CoreStoreSembastImp.getInstance("/data"));
3838
```
3939
It's possible to add other parameters to work with your instance of Parse Server:-
4040

@@ -48,7 +48,7 @@ It's possible to add other parameters to work with your instance of Parse Server
4848
liveQueryUrl: keyLiveQueryUrl, // Required if using LiveQuery
4949
autoSendSessionId: true, // Required for authentication and ACL
5050
securityContext: securityContext, // Again, required for some setups
51-
coreStore: await CoreStoreSharedPrefsImp.getInstance()); // Local data storage method. Will use SharedPreferences instead of Sembast as an internal DB
51+
coreStore: CoreStoreMemoryImp()); // Non persistent mode (default): Sdk will store everything in memmore instead of using Sembast as an internal DB.
5252
```
5353

5454

packages/dart/lib/src/data/parse_core_data.dart

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,11 @@ class ParseCoreData {
3535
List<int> liveListRetryIntervals,
3636
ParseConnectivityProvider connectivityProvider,
3737
String fileDirectory,
38-
Stream<void> appResumedStream,
38+
Stream<void> appResumedStream,
3939
}) async {
4040
_instance = ParseCoreData._init(appId, serverUrl);
4141

42-
assert(_instance.storage != null || store != null,
43-
'There is no CoreStore set.');
44-
45-
_instance.storage ??= store;
42+
_instance.storage ??= store ?? CoreStoreMemoryImp();
4643

4744
if (debug != null) {
4845
_instance.debug = debug;
@@ -98,7 +95,7 @@ class ParseCoreData {
9895
_instance.fileDirectory = fileDirectory;
9996
}
10097

101-
if(appResumedStream!= null){
98+
if (appResumedStream != null) {
10299
_instance.appResumedStream = appResumedStream;
103100
}
104101
}
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
part of flutter_parse_sdk;
2+
3+
class CoreStoreMemoryImp implements CoreStore {
4+
static Map<String, dynamic> _data = <String, dynamic>{};
5+
6+
@override
7+
Future<void> clear() async {
8+
_data = <String, dynamic>{};
9+
}
10+
11+
@override
12+
Future<bool> containsKey(String key) async {
13+
return _data.containsKey(key);
14+
}
15+
16+
@override
17+
Future<dynamic> get(String key) async {
18+
return _data[key];
19+
}
20+
21+
@override
22+
Future<bool> getBool(String key) async {
23+
return _data[key];
24+
}
25+
26+
@override
27+
Future<double> getDouble(String key) async {
28+
return _data[key];
29+
}
30+
31+
@override
32+
Future<int> getInt(String key) async {
33+
return _data[key];
34+
}
35+
36+
@override
37+
Future<String> getString(String key) async {
38+
return _data[key];
39+
}
40+
41+
@override
42+
Future<List<String>> getStringList(String key) async {
43+
return _data[key];
44+
}
45+
46+
@override
47+
Future<dynamic> remove(String key) async {
48+
return _data.remove(key);
49+
}
50+
51+
@override
52+
Future<void> setBool(String key, bool value) async {
53+
_data[key] = value;
54+
}
55+
56+
@override
57+
Future<void> setDouble(String key, double value) async {
58+
_data[key] = value;
59+
}
60+
61+
@override
62+
Future<void> setInt(String key, int value) async {
63+
_data[key] = value;
64+
}
65+
66+
@override
67+
Future<void> setString(String key, String value) async {
68+
_data[key] = value;
69+
}
70+
71+
@override
72+
Future<void> setStringList(String key, List<String> values) async {
73+
_data[key] = values;
74+
}
75+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import 'package:parse_server_sdk/parse_server_sdk.dart';
2+
import 'package:test/test.dart';
3+
4+
void main() {
5+
test('testBuilder', () async {
6+
await Parse().initialize('appId', 'serverUrl',
7+
clientKey: 'clientKey',
8+
liveQueryUrl: 'liveQueryUrl',
9+
appName: 'appName',
10+
appPackageName: 'somePackageName',
11+
appVersion: 'someAppVersion',
12+
masterKey: 'masterKey',
13+
sessionId: 'sessionId',
14+
fileDirectory: 'someDirectory',
15+
debug: true,);
16+
17+
expect(ParseCoreData().applicationId, 'appId');
18+
expect(ParseCoreData().serverUrl, 'serverUrl');
19+
expect(ParseCoreData().clientKey, 'clientKey');
20+
expect(ParseCoreData().liveQueryURL, 'liveQueryUrl');
21+
expect(ParseCoreData().appName, 'appName');
22+
expect(ParseCoreData().appPackageName, 'somePackageName');
23+
expect(ParseCoreData().appVersion, 'someAppVersion');
24+
expect(ParseCoreData().masterKey, 'masterKey');
25+
expect(ParseCoreData().sessionId, 'sessionId');
26+
expect(ParseCoreData().debug, true);
27+
expect(ParseCoreData().fileDirectory, 'someDirectory');
28+
});
29+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import 'package:mockito/mockito.dart';
2+
import 'package:parse_server_sdk/parse_server_sdk.dart';
3+
import 'package:test/test.dart';
4+
5+
class MockClient extends Mock implements ParseHTTPClient {}
6+
7+
void main() {
8+
group('queryBuilder', () {
9+
test('whereRelatedTo', () async {
10+
final MockClient client = MockClient();
11+
12+
await Parse().initialize(
13+
'appId',
14+
'https://test.parse.com',
15+
debug: true,
16+
// to prevent automatic detection
17+
fileDirectory: 'someDirectory',
18+
// to prevent automatic detection
19+
appName: 'appName',
20+
// to prevent automatic detection
21+
appPackageName: 'somePackageName',
22+
// to prevent automatic detection
23+
appVersion: 'someAppVersion',
24+
);
25+
26+
final QueryBuilder<ParseObject> queryBuilder =
27+
QueryBuilder<ParseObject>(ParseObject('_User', client: client));
28+
queryBuilder.whereRelatedTo('likes', 'Post', '8TOXdXf3tz');
29+
30+
when(client.data).thenReturn(ParseCoreData());
31+
await queryBuilder.query();
32+
33+
final Uri result = verify(client.get(captureAny)).captured.single;
34+
35+
expect(result.path, '/classes/_User');
36+
37+
final Uri expectedQuery = Uri(
38+
query:
39+
'where={"\$relatedTo":{"object":{"__type":"Pointer","className":"Post","objectId":"8TOXdXf3tz"},"key":"likes"}}');
40+
expect(result.query, expectedQuery.query);
41+
});
42+
});
43+
}

0 commit comments

Comments
 (0)