package db import ( "fmt" "os" "gopkg.in/yaml.v3" ) type targetConfig struct { Targets []struct { Name string `yaml:"name"` TargetURL string `yaml:"target_url"` Platform string `yaml:"platform"` IsActive bool `yaml:"is_active"` } `yaml:"targets"` } // LoadTargetsFromYAML reads a YAML file and inserts targets into the database if it's empty func (db *DB) LoadTargetsFromYAML(filepath string) error { data, err := os.ReadFile(filepath) if err != nil { return fmt.Errorf("could not read target config: %w", err) } var config targetConfig if err := yaml.Unmarshal(data, &config); err != nil { return fmt.Errorf("could not parse target config: %w", err) } // Check if we already have targets targets, err := db.GetAllTargets() if err != nil { return err } if len(targets) > 0 { // Do not overwrite existing targets return nil } for _, t := range config.Targets { _, err := db.CreateTarget(t.Name, t.TargetURL, t.Platform) if err != nil { return fmt.Errorf("failed to insert target %s: %w", t.Name, err) } } return nil }