Merge remote-tracking branch 'origin/dev' into cody/netwrok_SDK

# Conflicts:
#	apps/im_app/lib/features/chat/presentation/chat_db_test_view_model.dart
#	apps/im_app/lib/features/login/presentation/login_view_model.dart

修复逻辑漏洞,性能优化
This commit is contained in:
Cody
2026-03-08 20:47:28 +08:00
88 changed files with 5695 additions and 593 deletions

View File

@@ -23,7 +23,7 @@ class DatabaseRepositoryImpl implements DatabaseRepository {
) async {
final db = _db;
if (db == null) return;
await db.into(table).insertOnConflictUpdate(companion);
await db.into(table).insert(companion, mode: InsertMode.insertOrReplace);
}
@override
@@ -44,7 +44,8 @@ class DatabaseRepositoryImpl implements DatabaseRepository {
final db = _db;
if (db == null) return;
await db.batch(
(batch) => batch.insertAllOnConflictUpdate(table, companions),
(batch) =>
batch.insertAll(table, companions, mode: InsertMode.insertOrReplace),
);
}
@@ -106,7 +107,10 @@ class DatabaseRepositoryImpl implements DatabaseRepository {
) async {
final db = _db;
if (db == null) return null;
return (db.select(table)..where(filter)..limit(1)).getSingleOrNull();
return (db.select(table)
..where(filter)
..limit(1))
.getSingleOrNull();
}
// ── 监听 ─────────────────────────────────────────────────────────────────
@@ -135,7 +139,10 @@ class DatabaseRepositoryImpl implements DatabaseRepository {
) {
final db = _db;
if (db == null) return const Stream.empty();
return (db.select(table)..where(filter)..limit(1)).watchSingleOrNull();
return (db.select(table)
..where(filter)
..limit(1))
.watchSingleOrNull();
}
// ── 原始 SQL ─────────────────────────────────────────────────────────────
@@ -148,18 +155,12 @@ class DatabaseRepositoryImpl implements DatabaseRepository {
final db = _db;
if (db == null) return [];
return db
.customSelect(
sql,
variables: args.map((e) => Variable(e)).toList(),
)
.customSelect(sql, variables: args.map((e) => Variable(e)).toList())
.get();
}
@override
Future<void> rawExecute(
String sql, [
List<Object?> args = const [],
]) async {
Future<void> rawExecute(String sql, [List<Object?> args = const []]) async {
final db = _db;
if (db == null) return;
await db.customStatement(sql, args);