Skip to content

Commit de17487

Browse files
committed
feat: add mutex flag to the SurrealWasmMutex class. Ready for 1.0.0-beta.16+13 released.
1 parent f2faf01 commit de17487

File tree

3 files changed

+162
-61
lines changed

3 files changed

+162
-61
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ Changes to the project are tracked using build numbers behind the version number
1111

1212
## [Unreleased]
1313

14+
## [1.0.0-beta.16+13] - 2024-08-26
15+
16+
- Feat: Added `mutex` flag that default to `false` (off) to methods of the `SurrealWasmMutex` class to allow turn on/off the mutex locking mechanism.
17+
1418
## [1.0.0-beta.16+12] - 2024-08-24
1519

1620
- Feat: Added `SurrealWasmMutex` class to workaround the issue [#87](https://github.com/surrealdb/surrealdb.wasm/issues/87) of the surrealdb.wasm.

RELEASE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
- Feat: Added `SurrealWasmMutex` class to workaround the issue [#87](https://github.com/surrealdb/surrealdb.wasm/issues/87) of the surrealdb.wasm.
1+
- Feat: Added `mutex` flag that default to `false` (off) to methods of the `SurrealWasmMutex` class to allow turn on/off the mutex locking mechanism.

lib/src/surreal_wasm_mutex.dart

Lines changed: 157 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -17,137 +17,234 @@ class SurrealWasmMutex extends Surreal {
1717
}
1818

1919
@override
20-
Future<void> let(String key, Object value) async {
21-
await _mutex.protect(() async {
22-
return super.let(key, value);
23-
});
20+
Future<void> let(String key, Object value, {bool mutex = false}) async {
21+
if (!mutex) {
22+
await super.let(key, value);
23+
} else {
24+
await _mutex.protect(() async {
25+
return super.let(key, value);
26+
});
27+
}
2428
}
2529

2630
@override
27-
Future<void> unset(String key) async {
28-
await _mutex.protect(() async {
29-
return super.unset(key);
30-
});
31+
Future<void> unset(String key, {bool mutex = false}) async {
32+
if (!mutex) {
33+
await super.unset(key);
34+
} else {
35+
await _mutex.protect(() async {
36+
return super.unset(key);
37+
});
38+
}
3139
}
3240

3341
@override
34-
Future<Object?> signup(Map<String, dynamic> credentials) async {
35-
return _mutex.protect(() async {
42+
Future<Object?> signup(
43+
Map<String, dynamic> credentials, {
44+
bool mutex = false,
45+
}) async {
46+
if (!mutex) {
3647
return super.signup(credentials);
37-
});
48+
} else {
49+
return _mutex.protect(() async {
50+
return super.signup(credentials);
51+
});
52+
}
3853
}
3954

4055
@override
41-
Future<Object?> signin(Map<String, dynamic> credentials) async {
42-
return _mutex.protect(() async {
56+
Future<Object?> signin(
57+
Map<String, dynamic> credentials, {
58+
bool mutex = false,
59+
}) async {
60+
if (!mutex) {
4361
return super.signin(credentials);
44-
});
62+
} else {
63+
return _mutex.protect(() async {
64+
return super.signin(credentials);
65+
});
66+
}
4567
}
4668

4769
@override
48-
Future<void> invalidate() async {
49-
await _mutex.protect(() async {
50-
return super.invalidate();
51-
});
70+
Future<void> invalidate({bool mutex = false}) async {
71+
if (!mutex) {
72+
await super.invalidate();
73+
} else {
74+
await _mutex.protect(() async {
75+
return super.invalidate();
76+
});
77+
}
5278
}
5379

5480
@override
55-
Future<void> authenticate(String token) async {
56-
await _mutex.protect(() async {
57-
return super.authenticate(token);
58-
});
81+
Future<void> authenticate(String token, {bool mutex = false}) async {
82+
if (!mutex) {
83+
await super.authenticate(token);
84+
} else {
85+
await _mutex.protect(() async {
86+
return super.authenticate(token);
87+
});
88+
}
5989
}
6090

6191
@override
62-
Future<Object?> info() async {
63-
return _mutex.protect(() async {
92+
Future<Object?> info({bool mutex = false}) async {
93+
if (!mutex) {
6494
return super.info();
65-
});
95+
} else {
96+
return _mutex.protect(() async {
97+
return super.info();
98+
});
99+
}
66100
}
67101

68102
@override
69103
Future<Object?> patch(
70104
String resource,
71-
List<Map<String, dynamic>> data,
72-
) async {
73-
return _mutex.protect(() async {
105+
List<Map<String, dynamic>> data, {
106+
bool mutex = false,
107+
}) async {
108+
if (!mutex) {
74109
return super.patch(resource, data);
75-
});
110+
} else {
111+
return _mutex.protect(() async {
112+
return super.patch(resource, data);
113+
});
114+
}
76115
}
77116

78117
@override
79-
Future<String> version() async {
80-
return _mutex.protect(() async {
118+
Future<String> version({bool mutex = false}) async {
119+
if (!mutex) {
81120
return super.version();
82-
});
121+
} else {
122+
return _mutex.protect(() async {
123+
return super.version();
124+
});
125+
}
83126
}
84127

85128
@override
86129
Future<void> connect(
87130
String endpoint, {
88131
Map<String, dynamic> options = const {},
132+
bool mutex = false,
89133
}) async {
90-
await _mutex.protect(() async {
91-
return super.connect(endpoint, options: options);
92-
});
134+
if (!mutex) {
135+
await super.connect(endpoint, options: options);
136+
} else {
137+
await _mutex.protect(() async {
138+
return super.connect(endpoint, options: options);
139+
});
140+
}
93141
}
94142

95143
@override
96-
Future<void> close() async {
97-
await _mutex.protect(() async {
98-
return super.close();
99-
});
144+
Future<void> close({bool mutex = false}) async {
145+
if (!mutex) {
146+
await super.close();
147+
} else {
148+
await _mutex.protect(() async {
149+
return super.close();
150+
});
151+
}
100152
}
101153

102154
@override
103-
Future<void> use({String? namespace, String? database}) async {
104-
await _mutex.protect(() async {
105-
return super.use(namespace: namespace, database: database);
106-
});
155+
Future<void> use({
156+
String? namespace,
157+
String? database,
158+
bool mutex = false,
159+
}) async {
160+
if (!mutex) {
161+
await super.use(namespace: namespace, database: database);
162+
} else {
163+
await _mutex.protect(() async {
164+
return super.use(namespace: namespace, database: database);
165+
});
166+
}
107167
}
108168

109169
@override
110-
Future<Object?> create(String resource, Object data) async {
111-
return _mutex.protect(() async {
170+
Future<Object?> create(
171+
String resource,
172+
Object data, {
173+
bool mutex = false,
174+
}) async {
175+
if (!mutex) {
112176
return super.create(resource, data);
113-
});
177+
} else {
178+
return _mutex.protect(() async {
179+
return super.create(resource, data);
180+
});
181+
}
114182
}
115183

116184
@override
117-
Future<Object?> update(String resource, Object data) async {
118-
return _mutex.protect(() async {
185+
Future<Object?> update(
186+
String resource,
187+
Object data, {
188+
bool mutex = false,
189+
}) async {
190+
if (!mutex) {
119191
return super.update(resource, data);
120-
});
192+
} else {
193+
return _mutex.protect(() async {
194+
return super.update(resource, data);
195+
});
196+
}
121197
}
122198

123199
@override
124-
Future<Object?> merge(String resource, Object data) async {
125-
return _mutex.protect(() async {
200+
Future<Object?> merge(
201+
String resource,
202+
Object data, {
203+
bool mutex = false,
204+
}) async {
205+
if (!mutex) {
126206
return super.merge(resource, data);
127-
});
207+
} else {
208+
return _mutex.protect(() async {
209+
return super.merge(resource, data);
210+
});
211+
}
128212
}
129213

130214
@override
131-
Future<Object?> select(String resource) async {
132-
return _mutex.protect(() async {
215+
Future<Object?> select(String resource, {bool mutex = false}) async {
216+
if (!mutex) {
133217
return super.select(resource);
134-
});
218+
} else {
219+
return _mutex.protect(() async {
220+
return super.select(resource);
221+
});
222+
}
135223
}
136224

137225
@override
138226
Future<Object?> query(
139227
String sql, {
140228
Map<String, dynamic> bindings = const {},
229+
bool mutex = false,
141230
}) async {
142-
return _mutex.protect(() async {
231+
if (!mutex) {
143232
return super.query(sql, bindings: bindings);
144-
});
233+
} else {
234+
return _mutex.protect(() async {
235+
return super.query(sql, bindings: bindings);
236+
});
237+
}
145238
}
146239

147240
@override
148-
Future<Object?> delete(String resource) async {
149-
return _mutex.protect(() async {
241+
Future<Object?> delete(String resource, {bool mutex = false}) async {
242+
if (!mutex) {
150243
return super.delete(resource);
151-
});
244+
} else {
245+
return _mutex.protect(() async {
246+
return super.delete(resource);
247+
});
248+
}
152249
}
153250
}

0 commit comments

Comments
 (0)