7.rename_chatgpt_logs_to_llm_messages.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. package migrate
  2. import (
  3. "github.com/go-gormigrate/gormigrate/v2"
  4. "gorm.io/gorm"
  5. )
  6. var RenameChatGPTLogsToLLMSessions = &gormigrate.Migration{
  7. ID: "20250831000001",
  8. Migrate: func(tx *gorm.DB) error {
  9. // 检查 chatgpt_logs 表是否存在
  10. if !tx.Migrator().HasTable("chat_gpt_logs") {
  11. return nil
  12. }
  13. // llm_messages 表已存在,迁移数据后删除旧表
  14. // 使用原生 SQL 迁移数据,因为两个表结构相同
  15. if err := tx.Exec("INSERT INTO llm_messages (path, content) SELECT name, content FROM chat_gpt_logs WHERE NOT EXISTS (SELECT 1 FROM llm_messages WHERE llm_messages.name = chat_gpt_logs.name)").Error; err != nil {
  16. return err
  17. }
  18. // 删除旧表
  19. if err := tx.Migrator().DropTable("chat_gpt_logs"); err != nil {
  20. return err
  21. }
  22. return nil
  23. },
  24. Rollback: func(tx *gorm.DB) error {
  25. // 回滚:将 llm_messages 表重命名回 chatgpt_logs
  26. if !tx.Migrator().HasTable("chat_gpt_logs") && tx.Migrator().HasTable("llm_messages") {
  27. if err := tx.Exec("ALTER TABLE llm_messages RENAME TO chat_gpt_logs").Error; err != nil {
  28. return err
  29. }
  30. }
  31. return nil
  32. },
  33. }