@@ -6,41 +6,40 @@ import 'update_notification.dart';
66
77/// Mixin to provide default query functionality.
88///
9- /// Classes using this need to implement [SqliteConnection.readLock]
10- /// and [SqliteConnection.writeLock] .
9+ /// Classes using this need to implement [SqliteConnection.lock] .
1110mixin SqliteQueries implements SqliteWriteContext , SqliteConnection {
1211 /// Broadcast stream that is notified of any table updates
1312 Stream <UpdateNotification >? get updates;
1413
1514 @override
1615 Future <sqlite.ResultSet > execute (String sql,
1716 [List <Object ?> parameters = const []]) async {
18- return writeLock ((ctx) async {
17+ return lock ((ctx) async {
1918 return ctx.execute (sql, parameters);
2019 }, debugContext: 'execute()' );
2120 }
2221
2322 @override
2423 Future <sqlite.ResultSet > getAll (String sql,
2524 [List <Object ?> parameters = const []]) {
26- return readLock ((ctx) async {
25+ return lock ((ctx) async {
2726 return ctx.getAll (sql, parameters);
28- }, debugContext: 'getAll()' );
27+ }, readOnly : true , debugContext: 'getAll()' );
2928 }
3029
3130 @override
3231 Future <sqlite.Row > get (String sql, [List <Object ?> parameters = const []]) {
33- return readLock ((ctx) async {
32+ return lock ((ctx) async {
3433 return ctx.get (sql, parameters);
35- }, debugContext: 'get()' );
34+ }, readOnly : true , debugContext: 'get()' );
3635 }
3736
3837 @override
3938 Future <sqlite.Row ?> getOptional (String sql,
4039 [List <Object ?> parameters = const []]) {
41- return readLock ((ctx) async {
40+ return lock ((ctx) async {
4241 return ctx.getOptional (sql, parameters);
43- }, debugContext: 'getOptional()' );
42+ }, readOnly : true , debugContext: 'getOptional()' );
4443 }
4544
4645 @override
@@ -102,6 +101,7 @@ mixin SqliteQueries implements SqliteWriteContext, SqliteConnection {
102101 Future <T > readTransaction <T >(
103102 Future <T > Function (SqliteReadContext tx) callback,
104103 {Duration ? lockTimeout}) async {
104+ // ignore: deprecated_member_use_from_same_package
105105 return readLock ((ctx) async {
106106 return await internalReadTransaction (ctx, callback);
107107 }, lockTimeout: lockTimeout, debugContext: 'readTransaction()' );
@@ -111,6 +111,7 @@ mixin SqliteQueries implements SqliteWriteContext, SqliteConnection {
111111 Future <T > writeTransaction <T >(
112112 Future <T > Function (SqliteWriteContext tx) callback,
113113 {Duration ? lockTimeout}) async {
114+ // ignore: deprecated_member_use_from_same_package
114115 return writeLock ((ctx) async {
115116 return await internalWriteTransaction (ctx, callback);
116117 }, lockTimeout: lockTimeout, debugContext: 'writeTransaction()' );
@@ -140,4 +141,29 @@ mixin SqliteQueries implements SqliteWriteContext, SqliteConnection {
140141 return tx.executeBatch (sql, parameterSets);
141142 });
142143 }
144+
145+ @override
146+ Future <T > lock <T >(Future <T > Function (SqliteWriteContext tx) callback,
147+ {bool ? readOnly, String ? debugContext}) {
148+ if (readOnly == true ) {
149+ // ignore: deprecated_member_use_from_same_package
150+ return readLock ((ctx) => callback (ctx as SqliteWriteContext ),
151+ debugContext: debugContext);
152+ } else {
153+ // ignore: deprecated_member_use_from_same_package
154+ return writeLock (callback, debugContext: debugContext);
155+ }
156+ }
157+
158+ @override
159+ Future <T > transaction <T >(Future <T > Function (SqliteWriteContext tx) callback,
160+ {bool ? readOnly}) {
161+ if (readOnly == true ) {
162+ // ignore: deprecated_member_use_from_same_package
163+ return readTransaction ((ctx) => callback (ctx as SqliteWriteContext ));
164+ } else {
165+ // ignore: deprecated_member_use_from_same_package
166+ return writeTransaction (callback);
167+ }
168+ }
143169}
0 commit comments