2026-01-20 10:03:55 +02:00

65 lines
1.4 KiB
Go

package migrate
import (
"fmt"
"os"
"path/filepath"
)
// Validator checks if migration is needed
type Validator struct {
oramaDir string
}
// NewValidator creates a new Validator
func NewValidator(oramaDir string) *Validator {
return &Validator{oramaDir: oramaDir}
}
// CheckNeedsMigration checks if migration is needed
func (v *Validator) CheckNeedsMigration() bool {
oldDataDirs := []string{
filepath.Join(v.oramaDir, "data", "node-1"),
filepath.Join(v.oramaDir, "data", "node"),
}
oldServices := []string{
"debros-ipfs",
"debros-ipfs-cluster",
"debros-node",
}
oldConfigs := []string{
filepath.Join(v.oramaDir, "configs", "bootstrap.yaml"),
}
var needsMigration bool
fmt.Printf("Checking data directories:\n")
for _, dir := range oldDataDirs {
if _, err := os.Stat(dir); err == nil {
fmt.Printf(" ⚠️ Found old directory: %s\n", dir)
needsMigration = true
}
}
fmt.Printf("\nChecking services:\n")
for _, svc := range oldServices {
unitPath := filepath.Join("/etc/systemd/system", svc+".service")
if _, err := os.Stat(unitPath); err == nil {
fmt.Printf(" ⚠️ Found old service: %s\n", svc)
needsMigration = true
}
}
fmt.Printf("\nChecking configs:\n")
for _, cfg := range oldConfigs {
if _, err := os.Stat(cfg); err == nil {
fmt.Printf(" ⚠️ Found old config: %s\n", cfg)
needsMigration = true
}
}
return needsMigration
}