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:
@@ -1,27 +1,82 @@
|
||||
import 'package:drift/drift.dart';
|
||||
import 'package:im_app/data/local/drift/tables/favourites.dart';
|
||||
import 'package:im_app/data/local/drift/tables/sounds.dart';
|
||||
import 'package:im_app/data/local/drift/tables/tags.dart';
|
||||
import 'package:im_app/data/local/drift/tables/pending_friend_request_histories.dart';
|
||||
import 'package:im_app/data/local/drift/tables/message.dart';
|
||||
import 'package:im_app/data/local/drift/tables/recent_mini_apps.dart';
|
||||
import 'package:im_app/data/local/drift/tables/retries.dart';
|
||||
import 'package:im_app/data/local/drift/tables/groups.dart';
|
||||
import 'package:im_app/data/local/drift/tables/favorite_mini_apps.dart';
|
||||
import 'package:im_app/data/local/drift/tables/discover_mini_apps.dart';
|
||||
import 'package:im_app/data/local/drift/tables/chat_categories.dart';
|
||||
import 'package:im_app/data/local/drift/tables/chat_bots.dart';
|
||||
import 'package:im_app/data/local/drift/tables/favourite_details.dart';
|
||||
import 'package:im_app/data/local/drift/tables/user_request_histories.dart';
|
||||
import 'package:im_app/data/local/drift/tables/workspaces.dart';
|
||||
import 'package:im_app/data/local/drift/tables/users.dart';
|
||||
import 'package:im_app/data/local/drift/tables/test_tables.dart';
|
||||
import 'package:im_app/data/local/drift/tables/explore_mini_apps.dart';
|
||||
import 'package:im_app/data/local/drift/tables/call_logs.dart';
|
||||
import 'package:im_app/data/local/drift/tables/chats.dart';
|
||||
|
||||
part 'app_database.g.dart';
|
||||
|
||||
@DriftDatabase(tables: [Users,TestTables]) //update mapping here
|
||||
@DriftDatabase(
|
||||
tables: [
|
||||
Favourites,
|
||||
Sounds,
|
||||
Tags,
|
||||
PendingFriendRequestHistories,
|
||||
Messages,
|
||||
RecentMiniApps,
|
||||
Retries,
|
||||
Groups,
|
||||
FavoriteMiniApps,
|
||||
DiscoverMiniApps,
|
||||
ChatCategories,
|
||||
ChatBots,
|
||||
FavouriteDetails,
|
||||
UserRequestHistories,
|
||||
Workspaces,
|
||||
Users,
|
||||
ExploreMiniApps,
|
||||
CallLogs,
|
||||
Chats,
|
||||
],
|
||||
) //update mapping here
|
||||
class AppDatabase extends _$AppDatabase {
|
||||
|
||||
static Map<Type, TableInfo> getTableRegistry(GeneratedDatabase database) {
|
||||
if (database is! AppDatabase) {
|
||||
return {
|
||||
};
|
||||
return {};
|
||||
}
|
||||
return {
|
||||
User: database.users,
|
||||
TestTable: database.testTables,
|
||||
DriftFavourite: database.favourites,
|
||||
DriftSound: database.sounds,
|
||||
DriftTag: database.tags,
|
||||
DriftPendingFriendRequestHistory: database.pendingFriendRequestHistories,
|
||||
DriftMessage: database.messages,
|
||||
DriftRecentMiniApp: database.recentMiniApps,
|
||||
DriftRetry: database.retries,
|
||||
DriftGroup: database.groups,
|
||||
DriftFavoriteMiniApp: database.favoriteMiniApps,
|
||||
DriftDiscoverMiniApp: database.discoverMiniApps,
|
||||
DriftChatCategory: database.chatCategories,
|
||||
DriftChatBot: database.chatBots,
|
||||
DriftFavouriteDetail: database.favouriteDetails,
|
||||
DriftUserRequestHistory: database.userRequestHistories,
|
||||
DriftWorkspace: database.workspaces,
|
||||
DriftUser: database.users,
|
||||
DriftExploreMiniApp: database.exploreMiniApps,
|
||||
DriftCallLog: database.callLogs,
|
||||
DriftChat: database.chats,
|
||||
};
|
||||
}
|
||||
|
||||
AppDatabase(super.e);
|
||||
|
||||
//升级数据库用此版本号
|
||||
@override
|
||||
int get schemaVersion => 1;
|
||||
int get schemaVersion => 2;
|
||||
|
||||
@override
|
||||
MigrationStrategy get migration {
|
||||
@@ -30,9 +85,20 @@ class AppDatabase extends _$AppDatabase {
|
||||
await m.createAll();
|
||||
},
|
||||
onUpgrade: (m, from, to) async {
|
||||
// 自动检测并添加缺失列
|
||||
// Create any new tables that don't exist yet
|
||||
for (final table in allTables) {
|
||||
//取原来的字段
|
||||
final existingTables = await m.database
|
||||
.customSelect(
|
||||
"SELECT name FROM sqlite_master WHERE type='table' AND name='${table.actualTableName}'",
|
||||
)
|
||||
.get();
|
||||
|
||||
if (existingTables.isEmpty) {
|
||||
await m.createTable(table);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Auto-detect and add missing columns
|
||||
final existingColumns = await m.database
|
||||
.customSelect('PRAGMA table_info(${table.actualTableName})')
|
||||
.get();
|
||||
@@ -42,7 +108,6 @@ class AppDatabase extends _$AppDatabase {
|
||||
|
||||
for (final column in table.$columns) {
|
||||
if (!existingNames.contains(column.name)) {
|
||||
//字段缺失,添加。
|
||||
await m.addColumn(table, column);
|
||||
}
|
||||
}
|
||||
@@ -50,6 +115,4 @@ class AppDatabase extends _$AppDatabase {
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user