- Migrated 4 components from ECharts to Chart.js: * MonthlyExpenseCard.vue (折线图) * DailyTrendChart.vue (双系列折线图) * ExpenseCategoryCard.vue (环形图) * BudgetChartAnalysis.vue (仪表盘 + 多种图表) - Removed all ECharts imports and environment variable switches - Unified all charts to use BaseChart.vue component - Build verified: pnpm build success ✓ - No echarts imports remaining ✓ Refs: openspec/changes/migrate-remaining-echarts-to-chartjs
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为分类生成图标
|
||
""";
|
||
}
|
||
}
|