Skip to content

Commit

Permalink
dart 3.7
Browse files Browse the repository at this point in the history
  • Loading branch information
alextekartik committed Feb 13, 2025
1 parent c89f79f commit 1abbe2a
Show file tree
Hide file tree
Showing 202 changed files with 6,362 additions and 4,218 deletions.
2 changes: 1 addition & 1 deletion packages/console_test_app/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ version: 1.0.0
publish_to: none

environment:
sdk: ^3.5.0
sdk: ^3.7.0

dependencies:
sqflite_common_ffi:
Expand Down
12 changes: 8 additions & 4 deletions packages/sqflite_common_ffi_async/lib/src/platform_web.dart
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
import 'package:sqflite_common_ffi/sqflite_ffi.dart';

/// The Ffi database factory.
DatabaseFactory get databaseFactoryFfiAsync => throw UnsupportedError(
'Unsupported on the web, use sqflite_common_ffi_web');
DatabaseFactory get databaseFactoryFfiAsync =>
throw UnsupportedError(
'Unsupported on the web, use sqflite_common_ffi_web',
);

/// The Ffi database factory.
DatabaseFactory get databaseFactoryFfiAsyncTest => throw UnsupportedError(
'Unsupported on the web, use sqflite_common_ffi_web');
DatabaseFactory get databaseFactoryFfiAsyncTest =>
throw UnsupportedError(
'Unsupported on the web, use sqflite_common_ffi_web',
);
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,10 @@ class SqfliteDatabaseFfiAsync extends SqfliteDatabaseBase {
SqfliteDatabaseFfiAsync(super.openHelper, super.path);

@override
Future<T> transaction<T>(Future<T> Function(Transaction txn) action,
{bool? exclusive}) async {
Future<T> transaction<T>(
Future<T> Function(Transaction txn) action, {
bool? exclusive,
}) async {
return _wrapFfiAsyncCall(() async {
if (openTransaction is SqfliteFfiAsyncTransaction) {
var sqfliteTxn = openTransaction as SqfliteFfiAsyncTransaction;
Expand All @@ -38,7 +40,8 @@ class SqfliteDatabaseFfiAsync extends SqfliteDatabaseBase {

@override
Future<T> readTransaction<T>(
Future<T> Function(Transaction txn) action) async {
Future<T> Function(Transaction txn) action,
) async {
return _wrapFfiAsyncCall(() async {
if (openTransaction is SqfliteFfiAsyncTransaction) {
var sqfliteTxn = openTransaction as SqfliteFfiAsyncTransaction;
Expand All @@ -65,10 +68,15 @@ class SqfliteDatabaseFfiAsync extends SqfliteDatabaseBase {
if (options?.readOnly ?? false) {
if (!await factoryFfi.databaseExists(path)) {
throw SqfliteDatabaseException(
'read-only Database not found: $path', null);
'read-only Database not found: $path',
null,
);
}
sqliteOptions = const sqlite_async.SqliteOptions(
journalMode: null, journalSizeLimit: null, synchronous: null);
journalMode: null,
journalSizeLimit: null,
synchronous: null,
);
} else {
var dir = Directory(dirname(path));
try {
Expand All @@ -83,23 +91,33 @@ class SqfliteDatabaseFfiAsync extends SqfliteDatabaseBase {
sqliteOptions = const sqlite_async.SqliteOptions.defaults();
}
final factory = sqlite_async.DefaultSqliteOpenFactory(
path: path, sqliteOptions: sqliteOptions);

_database = sqlite_async.SqliteDatabase.withFactory(factory,
maxReaders: maxReaders);
path: path,
sqliteOptions: sqliteOptions,
);

_database = sqlite_async.SqliteDatabase.withFactory(
factory,
maxReaders: maxReaders,
);
//_database = sqlite_async.SqliteDatabase(path: path);
return _asyncId;
}

Future<List<Map<String, Object?>>> _select(sqlite_async.SqliteReadContext wc,
String sql, List<Object?>? arguments) async {
Future<List<Map<String, Object?>>> _select(
sqlite_async.SqliteReadContext wc,
String sql,
List<Object?>? arguments,
) async {
var resultSet = await wc.getAll(sql, _fixArguments(arguments));
return SqfliteResultSet(resultSet);
}

@override
Future<List<Map<String, Object?>>> txnRawQuery(
SqfliteTransaction? txn, String sql, List<Object?>? arguments) async {
SqfliteTransaction? txn,
String sql,
List<Object?>? arguments,
) async {
return _wrapFfiAsyncCall(() {
return _select(_readContext(txn), sql, arguments);
});
Expand All @@ -108,8 +126,12 @@ class SqfliteDatabaseFfiAsync extends SqfliteDatabaseBase {
/// Execute a raw SELECT command by page.
/// TODO not supported yet
@override
Future<SqfliteQueryCursor> txnRawQueryCursor(SqfliteTransaction? txn,
String sql, List<Object?>? arguments, int pageSize) async {
Future<SqfliteQueryCursor> txnRawQueryCursor(
SqfliteTransaction? txn,
String sql,
List<Object?>? arguments,
int pageSize,
) async {
var results = await _select(_readContext(txn), sql, arguments);
return SqfliteQueryCursor(this, txn, null, results);
}
Expand All @@ -129,8 +151,9 @@ class SqfliteDatabaseFfiAsync extends SqfliteDatabaseBase {
sqlite_async.SqliteWriteContext _writeContext(SqfliteTransaction? txn) {
if (txn is SqfliteFfiAsyncReadTransaction) {
throw SqfliteFfiException(
code: internalErrorCode,
message: 'read transaction cannot be used for write');
code: internalErrorCode,
message: 'read transaction cannot be used for write',
);
}
return (txn as SqfliteFfiAsyncTransaction?)?.writeContext ?? _database;
}
Expand All @@ -142,8 +165,10 @@ class SqfliteDatabaseFfiAsync extends SqfliteDatabaseBase {
return _writeContext(txn);
}

Future<T> _writeTransaction<T>(SqfliteTransaction? txn,
Future<T> Function(sqlite_async.SqliteWriteContext writeContext) action) {
Future<T> _writeTransaction<T>(
SqfliteTransaction? txn,
Future<T> Function(sqlite_async.SqliteWriteContext writeContext) action,
) {
if (txn == null) {
return _wrapFfiAsyncCall(() async {
return await _database.writeTransaction(action);
Expand All @@ -157,8 +182,11 @@ class SqfliteDatabaseFfiAsync extends SqfliteDatabaseBase {

@override
Future<T> txnExecute<T>(
SqfliteTransaction? txn, String sql, List<Object?>? arguments,
{bool? beginTransaction}) {
SqfliteTransaction? txn,
String sql,
List<Object?>? arguments, {
bool? beginTransaction,
}) {
// devPrint('txnExecute $sql $arguments');
return _writeTransaction<T>(txn, (wc) async {
var result = await wc.execute(sql, _fixArguments(arguments));
Expand All @@ -168,13 +196,17 @@ class SqfliteDatabaseFfiAsync extends SqfliteDatabaseBase {

//}

Future<int> _insert(sqlite_async.SqliteWriteContext wc, String sql,
List<Object?>? arguments) async {
Future<int> _insert(
sqlite_async.SqliteWriteContext wc,
String sql,
List<Object?>? arguments,
) async {
// Result is empty list
await wc.execute(sql, _fixArguments(arguments));

var result =
await wc.get('SELECT last_insert_rowid() as rowid, changes() as count');
var result = await wc.get(
'SELECT last_insert_rowid() as rowid, changes() as count',
);
// devPrint('insert $result');
var count = result['count'] as int;
if (count > 0) {
Expand All @@ -186,7 +218,10 @@ class SqfliteDatabaseFfiAsync extends SqfliteDatabaseBase {

@override
Future<int> txnRawInsert(
SqfliteTransaction? txn, String sql, List<Object?>? arguments) async {
SqfliteTransaction? txn,
String sql,
List<Object?>? arguments,
) async {
// devPrint('txnRawInsert $sql $arguments');
return _writeTransaction<int>(txn, (wc) async {
return _insert(wc, sql, arguments);
Expand All @@ -195,8 +230,11 @@ class SqfliteDatabaseFfiAsync extends SqfliteDatabaseBase {

@override
Future<List<Object?>> txnApplyBatch(
SqfliteTransaction? txn, SqfliteBatch batch,
{bool? noResult, bool? continueOnError}) {
SqfliteTransaction? txn,
SqfliteBatch batch, {
bool? noResult,
bool? continueOnError,
}) {
return _writeTransaction(txn, (wc) async {
var results = <Object?>[];

Expand All @@ -213,17 +251,21 @@ class SqfliteDatabaseFfiAsync extends SqfliteDatabaseBase {
addResult(await _insert(wc, operation.sql, operation.arguments));
break;
case SqliteSqlCommandType.update:
addResult(await _updateOrDelete(
wc, operation.sql, operation.arguments));
addResult(
await _updateOrDelete(wc, operation.sql, operation.arguments),
);
break;

case SqliteSqlCommandType.delete:
addResult(await _updateOrDelete(
wc, operation.sql, operation.arguments));
addResult(
await _updateOrDelete(wc, operation.sql, operation.arguments),
);
break;
case SqliteSqlCommandType.execute:
await wc.execute(
operation.sql, _fixArguments(operation.arguments));
operation.sql,
_fixArguments(operation.arguments),
);
addResult(null);
case SqliteSqlCommandType.query:
addResult(await _select(wc, operation.sql, operation.arguments));
Expand All @@ -246,26 +288,36 @@ class SqfliteDatabaseFfiAsync extends SqfliteDatabaseBase {
/// returns the update count
@override
Future<int> txnRawUpdate(
SqfliteTransaction? txn, String sql, List<Object?>? arguments) =>
_txnRawUpdateOrDelete(txn, sql, arguments);
SqfliteTransaction? txn,
String sql,
List<Object?>? arguments,
) => _txnRawUpdateOrDelete(txn, sql, arguments);

/// for Delete sql query
/// returns the delete count
@override
Future<int> txnRawDelete(
SqfliteTransaction? txn, String sql, List<Object?>? arguments) =>
_txnRawUpdateOrDelete(txn, sql, arguments);
SqfliteTransaction? txn,
String sql,
List<Object?>? arguments,
) => _txnRawUpdateOrDelete(txn, sql, arguments);

Future<int> _txnRawUpdateOrDelete(
SqfliteTransaction? txn, String sql, List<Object?>? arguments) {
SqfliteTransaction? txn,
String sql,
List<Object?>? arguments,
) {
return _writeTransaction<int>(txn, (wc) async {
// Result is empty list
return await _updateOrDelete(wc, sql, arguments);
});
}

Future<int> _updateOrDelete(sqlite_async.SqliteWriteContext wc, String sql,
List<Object?>? arguments) async {
Future<int> _updateOrDelete(
sqlite_async.SqliteWriteContext wc,
String sql,
List<Object?>? arguments,
) async {
// Result is empty list
await wc.execute(sql, _fixArguments(arguments));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,14 @@ import 'sqflite_ffi_async_database.dart';
var factoryFfi = databaseFactoryFfi; //.debugQuickLoggerWrapper();

/// The Ffi database factory.
var databaseFactoryFfiAsyncImpl =
SqfliteDatabaseFactoryFfiAsync(tag: 'ffi_async');
var databaseFactoryFfiAsyncImpl = SqfliteDatabaseFactoryFfiAsync(
tag: 'ffi_async',
);

/// The Ffi database factory for tests.
var databaseFactoryFfiAsyncTestImpl =
SqfliteDatabaseFactoryFfiAsync(tag: 'ffi_async_test');
var databaseFactoryFfiAsyncTestImpl = SqfliteDatabaseFactoryFfiAsync(
tag: 'ffi_async_test',
);

/// The Ffi async database factory.
class SqfliteDatabaseFactoryFfiAsync with SqfliteDatabaseFactoryMixin {
Expand Down Expand Up @@ -46,7 +48,9 @@ class SqfliteDatabaseFactoryFfiAsync with SqfliteDatabaseFactoryMixin {

@override
SqfliteDatabase newDatabase(
SqfliteDatabaseOpenHelper openHelper, String path) {
SqfliteDatabaseOpenHelper openHelper,
String path,
) {
return SqfliteDatabaseFfiAsync(openHelper, path);
}

Expand Down Expand Up @@ -90,8 +94,10 @@ class SqfliteDatabaseFactoryFfiAsync with SqfliteDatabaseFactoryMixin {
}

@override
Future<Database> openDatabase(String path,
{OpenDatabaseOptions? options}) async {
Future<Database> openDatabase(
String path, {
OpenDatabaseOptions? options,
}) async {
// Read-only not supported in ffi_async
if (options?.readOnly ?? false) {
return await factoryFfi.openDatabase(path, options: options);
Expand Down
2 changes: 1 addition & 1 deletion packages/sqflite_common_ffi_async/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ platforms:
ios:

environment:
sdk: ^3.5.0
sdk: ^3.7.0

dependencies:
path: '>=1.8.0 <3.0.0'
Expand Down
Loading

0 comments on commit 1abbe2a

Please sign in to comment.