11
This commit is contained in:
1 parent
f6b37348c4
commit
917f03bc58
61 files changed
+4233
-367
No files matched your search
@@ -351,6 +351,41 @@ abstract class DatabaseMigration {
|
||||
}
|
||||
});
|
||||
|
||||
/// 版本12为本地人脸增加质量诊断结果;全部字段可空或带默认值,不影响历史识别数据。
|
||||
static Migration migration11To12 = Migration(11, 12, (database) async {
|
||||
final columns = await database.rawQuery('PRAGMA table_info(face)');
|
||||
final names = columns.map((column) => column['name']).toSet();
|
||||
if (!names.contains('qualityScore')) {
|
||||
await database.execute('ALTER TABLE face ADD COLUMN qualityScore REAL');
|
||||
}
|
||||
if (!names.contains('qualityStatus')) {
|
||||
await database.execute(
|
||||
"ALTER TABLE face ADD COLUMN qualityStatus TEXT NOT NULL DEFAULT 'pending'",
|
||||
);
|
||||
}
|
||||
if (!names.contains('qualityCheckedAt')) {
|
||||
await database.execute(
|
||||
'ALTER TABLE face ADD COLUMN qualityCheckedAt TEXT',
|
||||
);
|
||||
}
|
||||
if (!names.contains('qualityErrorCode')) {
|
||||
await database.execute(
|
||||
'ALTER TABLE face ADD COLUMN qualityErrorCode INTEGER',
|
||||
);
|
||||
}
|
||||
await database.execute(
|
||||
"UPDATE face SET qualityStatus = 'pending' WHERE qualityStatus IS NULL OR qualityStatus NOT IN ('pending', 'detected', 'failed')",
|
||||
);
|
||||
// 项目现有 DateTimeEmptyConverter 以空字符串表示业务空值;迁移旧记录时同步规范化,
|
||||
// 避免 Floor 生成代码把 SQLite NULL 强转为 String 后读取失败。
|
||||
await database.execute(
|
||||
"UPDATE face SET qualityCheckedAt = '' WHERE qualityCheckedAt IS NULL",
|
||||
);
|
||||
await database.execute(
|
||||
'CREATE INDEX IF NOT EXISTS index_face_qualityStatus_qualityScore ON face(qualityStatus, qualityScore)',
|
||||
);
|
||||
});
|
||||
|
||||
/// 按起始版本升序返回全部迁移,Floor 打开旧数据库时据此连续升级到当前版本。
|
||||
static List<Migration> getDatabaseMigrations() {
|
||||
return [
|
||||
@@ -364,6 +399,7 @@ abstract class DatabaseMigration {
|
||||
migration8To9,
|
||||
migration9To10,
|
||||
migration10To11,
|
||||
migration11To12,
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user