Files
zkill-susser/main.go
2026-01-05 16:30:03 +01:00

73 lines
1.7 KiB
Go

package main
import (
"flag"
"fmt"
"os"
"path/filepath"
logger "git.site.quack-lab.dev/dave/cylogger"
utils "git.site.quack-lab.dev/dave/cyutils"
)
func main() {
ingest := flag.Bool("ingest", false, "ingest killmails from data directory")
flag.Parse()
logger.InitFlag()
db, err := GetDB()
if err != nil {
logger.Error("Failed to get database: %v", err)
return
}
if *ingest {
err = db.DB().AutoMigrate(&Killmail{}, &Attacker{}, &Victim{}, &Item{}, &Position{})
if err != nil {
logger.Error("Failed to migrate database: %v", err)
return
}
DoIngest()
}
logger.Info("Querying fits")
params := QueryParams{
Ship: "algos",
}
fits, err := db.QueryFits(params)
if err != nil {
logger.Error("Failed to query fits: %v", err)
return
}
logger.Info("Found %d fits", len(fits))
for _, fit := range fits {
logger.Info("Fit: %v", fit)
}
}
func DoIngest() {
killmailFiles, err := os.ReadDir("data")
if err != nil {
logger.Error("Failed to read data directory: %v", err)
return
}
totalFiles := len(killmailFiles)
utils.WithWorkers(4, killmailFiles, func(worker int, index int, file os.DirEntry) {
flog := logger.Default.WithPrefix(fmt.Sprintf("worker %d", worker)).WithPrefix(fmt.Sprintf("file %d of %d", index, totalFiles)).WithPrefix(file.Name())
flog.Info("Loading killmails")
killmails, err := LoadBz2Killmails(filepath.Join("data", file.Name()))
if err != nil {
flog.Error("Failed to load killmails: %v", err)
return
}
flog.Info("Loaded %d killmails", len(killmails))
err = db.SaveKillmails(killmails)
if err != nil {
flog.Error("Failed to save killmails: %v", err)
return
}
flog.Info("Saved %d killmails", len(killmails))
})
}