feat: add Apple jobs crawler and implement duplicate-prevention logic for target loading
This commit is contained in:
@@ -28,20 +28,23 @@ func (db *DB) LoadTargetsFromYAML(filepath string) error {
|
||||
return fmt.Errorf("could not parse target config: %w", err)
|
||||
}
|
||||
|
||||
// Check if we already have targets
|
||||
targets, err := db.GetAllTargets()
|
||||
// Get existing targets to prevent duplicates
|
||||
existingTargets, err := db.GetAllTargets()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if len(targets) > 0 {
|
||||
// Do not overwrite existing targets
|
||||
return nil
|
||||
|
||||
existingURLs := make(map[string]bool)
|
||||
for _, t := range existingTargets {
|
||||
existingURLs[t.TargetURL] = true
|
||||
}
|
||||
|
||||
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)
|
||||
if !existingURLs[t.TargetURL] {
|
||||
_, 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
|
||||
|
||||
Reference in New Issue
Block a user