39 lines
1.4 KiB
C#
39 lines
1.4 KiB
C#
|
|
namespace Database.Migrations;
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 数据库迁移工具
|
|||
|
|
/// </summary>
|
|||
|
|
public class DatabaseMigrator
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// 执行数据库迁移SQL脚本
|
|||
|
|
/// </summary>
|
|||
|
|
public static string GetMigrationScript()
|
|||
|
|
{
|
|||
|
|
return """
|
|||
|
|
-- 数据库迁移:为TransactionCategory表添加IconKeywords字段
|
|||
|
|
-- 检查IconKeywords字段是否已存在
|
|||
|
|
|
|||
|
|
-- 如果字段不存在,则添加
|
|||
|
|
-- SQLite在尝试添加已存在的列时会报错,所以我们需要先检查
|
|||
|
|
-- 由于SQLite不支持IF NOT EXISTS语法用于ALTER TABLE,
|
|||
|
|
-- 我们可以尝试执行并捕获错误
|
|||
|
|
""";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取修改Icon字段长度的脚本
|
|||
|
|
/// </summary>
|
|||
|
|
public static string GetIconFieldLengthMigrationScript()
|
|||
|
|
{
|
|||
|
|
return """
|
|||
|
|
-- SQLite不支持直接修改字段长度
|
|||
|
|
-- 对于现有数据,我们需要确保Icon字段可以存储Iconify标识符(通常50个字符以内)
|
|||
|
|
-- 如果Icon字段存储的是旧的SVG JSON数组,这些数据可能超过50字符
|
|||
|
|
-- 需要的数据迁移逻辑在应用层处理:
|
|||
|
|
-- 1. 清空所有分类的Icon字段(因为旧数据格式不再兼容)
|
|||
|
|
-- 2. 重新通过IconSearchService为分类生成图标
|
|||
|
|
""";
|
|||
|
|
}
|
|||
|
|
}
|