[优化] 更新数据库迁移逻辑,添加 v19 版本验证,重构隧道相关表结构

This commit is contained in:
ryan
2026-06-01 14:06:36 +08:00
parent af36676e2e
commit 394e3c4855
4 changed files with 48 additions and 12 deletions
+25 -2
View File
@@ -82,6 +82,8 @@ func (databaseSchemaMigrationContext) ValidateDatabaseSchemaVersion(db *gorm.DB,
return validateDatabaseSchemaV17(db, backend)
case 18:
return validateDatabaseSchemaV18(db, backend)
case 19:
return validateDatabaseSchemaV19(db, backend)
default:
return fmt.Errorf("database schema validation for v%d is not defined", version)
}
@@ -1164,8 +1166,13 @@ func validateDatabaseSchemaV16(db *gorm.DB, backend string) error {
if err := validateDatabaseSchemaV15(db, backend); err != nil {
return err
}
if !db.Migrator().HasTable("tunnels") {
return fmt.Errorf("table tunnels is missing")
if !db.Migrator().HasColumn(&ProxyRoute{}, "tunnel_node_id") {
if !db.Migrator().HasTable("tunnels") {
return fmt.Errorf("table tunnels is missing")
}
if !db.Migrator().HasColumn(&ProxyRoute{}, "tunnel_id") {
return fmt.Errorf("column proxy_routes.tunnel_id is missing")
}
}
if !db.Migrator().HasColumn(&Node{}, "node_type") {
return fmt.Errorf("column nodes.node_type is missing")
@@ -1202,6 +1209,22 @@ func validateDatabaseSchemaV18(db *gorm.DB, backend string) error {
return nil
}
func validateDatabaseSchemaV19(db *gorm.DB, backend string) error {
if err := validateDatabaseSchemaV18(db, backend); err != nil {
return err
}
if db.Migrator().HasTable("tunnels") {
return fmt.Errorf("table tunnels should be dropped in v19")
}
if !db.Migrator().HasColumn(&ProxyRoute{}, "tunnel_node_id") {
return fmt.Errorf("column proxy_routes.tunnel_node_id is missing")
}
if db.Migrator().HasColumn(&ProxyRoute{}, "tunnel_id") {
return fmt.Errorf("column proxy_routes.tunnel_id should be dropped in v19")
}
return nil
}
func databaseSchemaMigrations() []databaseSchemaMigration {
ctx := databaseSchemaMigrationContext{}
migrations := []databaseSchemaMigration{}