数据库表迁移

This commit is contained in:
Happi (哈比)
2026-03-06 19:00:25 +08:00
parent 113ecb633a
commit 119b376720
21 changed files with 553 additions and 55 deletions

View File

@@ -1,27 +1,61 @@
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 {
Favourite: database.favourites,
Sound: database.sounds,
Tag: database.tags,
PendingFriendRequestHistory: database.pendingFriendRequestHistories,
Message: database.messages,
RecentMiniApp: database.recentMiniApps,
Retry: database.retries,
Group: database.groups,
FavoriteMiniApp: database.favoriteMiniApps,
DiscoverMiniApp: database.discoverMiniApps,
ChatCategory: database.chatCategories,
ChatBot: database.chatBots,
FavouriteDetail: database.favouriteDetails,
UserRequestHistory: database.userRequestHistories,
Workspace: database.workspaces,
User: database.users,
TestTable: database.testTables,
ExploreMiniApp: database.exploreMiniApps,
CallLog: database.callLogs,
Chat: database.chats,
};
}
AppDatabase(super.e);
//升级数据库用此版本号
@override
int get schemaVersion => 1;
int get schemaVersion => 2;
@override
MigrationStrategy get migration {
@@ -29,10 +63,24 @@ class AppDatabase extends _$AppDatabase {
onCreate: (m) async {
await m.createAll();
},
beforeOpen: (details) async {
print("wtf");
},
onUpgrade: (m, from, to) async {
// 自动检测并添加缺失列
// Create any new tables that don't exist yet
print("upgrading");
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) {
print("creating table");
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 +90,6 @@ class AppDatabase extends _$AppDatabase {
for (final column in table.$columns) {
if (!existingNames.contains(column.name)) {
//字段缺失,添加。
await m.addColumn(table, column);
}
}