mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-10-03 15:06:36 +08:00
[功能] 添加迁移遗留观察性列的功能,支持从 raw_json 填充 metadata_json
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/glebarez/sqlite"
|
||||
"gorm.io/driver/postgres"
|
||||
@@ -149,6 +150,50 @@ func migrateTextColumns(db *gorm.DB, backend string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func migrateObservabilityLegacyColumns(db *gorm.DB) error {
|
||||
if db == nil {
|
||||
return nil
|
||||
}
|
||||
if !db.Migrator().HasTable(&NodeHealthEvent{}) || !db.Migrator().HasColumn(&NodeHealthEvent{}, "raw_json") {
|
||||
return nil
|
||||
}
|
||||
type legacyHealthEventRaw struct {
|
||||
ID uint
|
||||
RawJSON string
|
||||
MetadataJSON string
|
||||
}
|
||||
type legacyHealthEventPayload struct {
|
||||
Metadata map[string]string `json:"metadata"`
|
||||
}
|
||||
|
||||
var rows []legacyHealthEventRaw
|
||||
if err := db.Model(&NodeHealthEvent{}).
|
||||
Select("id, raw_json, metadata_json").
|
||||
Where("raw_json <> '' AND (metadata_json IS NULL OR metadata_json = '')").
|
||||
Find(&rows).Error; err != nil {
|
||||
return fmt.Errorf("query legacy node health event raw_json failed: %w", err)
|
||||
}
|
||||
for _, row := range rows {
|
||||
var payload legacyHealthEventPayload
|
||||
if err := json.Unmarshal([]byte(row.RawJSON), &payload); err != nil {
|
||||
continue
|
||||
}
|
||||
if len(payload.Metadata) == 0 {
|
||||
continue
|
||||
}
|
||||
metadataJSON, err := json.Marshal(payload.Metadata)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
if err := db.Model(&NodeHealthEvent{}).
|
||||
Where("id = ?", row.ID).
|
||||
Update("metadata_json", string(metadataJSON)).Error; err != nil {
|
||||
return fmt.Errorf("migrate node health event metadata_json failed: %w", err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func isDatabaseEmpty(db *gorm.DB) (bool, error) {
|
||||
for _, item := range registeredModels() {
|
||||
var count int64
|
||||
@@ -310,6 +355,9 @@ func InitDB() (err error) {
|
||||
if err = migrateTextColumns(db, backend); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = migrateObservabilityLegacyColumns(db); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = migrateSQLiteDataIfNeeded(db, backend); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user