feat: add Apple jobs crawler and implement duplicate-prevention logic for target loading

This commit is contained in:
2026-08-15 00:56:20 -07:00
parent 3d0156a7d8
commit f8bfc4b5e3
5 changed files with 335 additions and 8 deletions
+11 -8
View File
@@ -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
+4
View File
@@ -15,6 +15,7 @@ import (
"github.com/hireme/hireme/internal/db"
"github.com/hireme/hireme/internal/filter"
"github.com/hireme/hireme/internal/logger"
"github.com/hireme/hireme/pkg/crawler/apple"
"github.com/hireme/hireme/pkg/crawler/google"
)
@@ -292,5 +293,8 @@ func (p *WorkerPool) getCrawlerForPlatform(platform string) crawler.SiteCrawler
if strings.Contains(plat, "google") {
return google.NewGoogleCrawler()
}
if strings.Contains(plat, "apple") {
return apple.NewAppleCrawler()
}
return crawler.NewGenericCrawler()
}