Files
agent/backend/internal/models/legacy_tables.go

65 lines
2.4 KiB
Go

package models
import (
"fmt"
"gorm.io/gorm"
)
var legacyTableRenames = []struct {
legacy string
current string
}{
{legacy: "senlin_agent_schema_migrations", current: "sa_schema_migrations"},
{legacy: "senlin_agent_users", current: "sa_users"},
{legacy: "senlin_agent_projects", current: "sa_projects"},
{legacy: "senlin_agent_inbox_items", current: "sa_inbox_items"},
{legacy: "senlin_agent_inbox_suggestions", current: "sa_inbox_suggestions"},
{legacy: "senlin_agent_tasks", current: "sa_tasks"},
{legacy: "senlin_agent_notes", current: "sa_notes"},
{legacy: "senlin_agent_sources", current: "sa_sources"},
{legacy: "senlin_agent_ai_expert_categories", current: "sa_ai_expert_categories"},
{legacy: "senlin_agent_ai_experts", current: "sa_ai_experts"},
{legacy: "senlin_agent_ai_sessions", current: "sa_ai_sessions"},
{legacy: "senlin_agent_tags", current: "sa_tags"},
{legacy: "senlin_agent_project_channels", current: "sa_project_channels"},
{legacy: "senlin_agent_cron_plans", current: "sa_cron_plans"},
{legacy: "senlin_agent_project_events", current: "sa_project_events"},
{legacy: "senlin_agent_ai_keys", current: "sa_ai_keys"},
{legacy: "senlin_agent_ai_call_logs", current: "sa_ai_call_logs"},
{legacy: "senlin_agent_ai_rate_buckets", current: "sa_ai_rate_buckets"},
{legacy: "senlin_agent_task_shares", current: "sa_task_shares"},
}
func renameLegacyTables(database *gorm.DB) error {
migrator := database.Migrator()
for _, table := range legacyTableRenames {
if !migrator.HasTable(table.legacy) {
continue
}
if migrator.HasTable(table.current) {
return fmt.Errorf("cannot rename legacy table %s: target table %s already exists", table.legacy, table.current)
}
if err := migrator.RenameTable(table.legacy, table.current); err != nil {
return fmt.Errorf("rename legacy table %s to %s: %w", table.legacy, table.current, err)
}
}
if migrator.HasTable("sa_documents") {
for _, column := range []struct {
legacy string
current string
}{
{legacy: "created_by", current: "owner_id"},
{legacy: "created_by_identity", current: "owner_identity"},
} {
if !migrator.HasColumn("sa_documents", column.legacy) || migrator.HasColumn("sa_documents", column.current) {
continue
}
if err := migrator.RenameColumn("sa_documents", column.legacy, column.current); err != nil {
return fmt.Errorf("rename sa_documents column %s to %s: %w", column.legacy, column.current, err)
}
}
}
return nil
}