From 93d279ccd27d2ed881794a706ab3c7ccf59a2748 Mon Sep 17 00:00:00 2001 From: JP Appel Date: Thu, 17 Sep 2026 21:35:00 -0400 Subject: Store indexing metadata in db --- cmd/index.go | 5 +++++ pkg/data/db.go | 31 ++++++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/cmd/index.go b/cmd/index.go index 5183870..ba9bb8f 100644 --- a/cmd/index.go +++ b/cmd/index.go @@ -7,6 +7,7 @@ import ( "log/slog" "os" "strings" + "time" "github.com/jpappel/atlas/pkg/data" "github.com/jpappel/atlas/pkg/index" @@ -91,9 +92,11 @@ func RunIndex(gFlags GlobalFlags, iFlags IndexFlags, db *data.Query) byte { } traversedFiles := idx.Traverse(gFlags.NumWorkers, iFlags.IgnoreHidden) + crawlTime := time.Now().UTC().Unix() fmt.Print("Crawled ", len(traversedFiles)) filteredFiles := idx.Filter(traversedFiles, gFlags.NumWorkers) + filterTime := time.Now().UTC().Unix() fmt.Print(", Filtered ", len(filteredFiles)) var errCnt uint64 @@ -106,6 +109,7 @@ func RunIndex(gFlags GlobalFlags, iFlags IndexFlags, db *data.Query) byte { } fmt.Println() } + parseTime := time.Now().UTC().Unix() var err error // switch in order to appease gopls... @@ -119,6 +123,7 @@ func RunIndex(gFlags GlobalFlags, iFlags IndexFlags, db *data.Query) byte { fmt.Fprintln(os.Stderr, "Error modifying index:", err) return 1 } + db.UpdateInfo(len(traversedFiles), crawlTime, len(filteredFiles), filterTime, len(idx.Documents), parseTime) case "tidy": if err := db.Tidy(); err != nil { fmt.Fprintln(os.Stderr, "Error while tidying:", err) diff --git a/pkg/data/db.go b/pkg/data/db.go index 56024d3..9127b88 100644 --- a/pkg/data/db.go +++ b/pkg/data/db.go @@ -5,6 +5,7 @@ import ( "database/sql" "fmt" "log/slog" + "os" "regexp" "strings" "time" @@ -451,9 +452,14 @@ func createSchema(db *sql.DB, version string) error { } t := time.Now().UTC().Unix() - if _, err = tx.Exec("INSERT OR IGNORE INTO Info (key, value, updated) VALUES (?,?,?), (?,?,?)", + hostname, _ := os.Hostname() + if _, err = tx.Exec(` + INSERT OR IGNORE INTO Info(key, value, updated) + VALUES + (?,?,?), (?,?,?), (?,?,?)`, "created", "", t, "version", version, t, + "creation_hostname", hostname, t, ); err != nil { tx.Rollback() return err @@ -610,6 +616,29 @@ func regex(re, s string) (bool, error) { return regexp.MatchString(re, s) } +func (q Query) UpdateInfo(crawlCount int, crawlTime int64, filteredCount int, filterTime int64, parseCount int, parseTime int64) error { + tx, err := q.db.Begin() + if err != nil { + return err + } + + defer tx.Rollback() + + _, err = tx.Exec(` + INSERT OR UPDATE INTO Info + VALUES + (?,?,?), (?,?,?), (?,?,?)`, + "crawl", fmt.Sprint(crawlCount), crawlTime, + "filter", fmt.Sprint(filteredCount), filterTime, + "parse", fmt.Sprint(parseCount), parseTime, + ) + if err != nil { + return err + } + + return tx.Commit() +} + func init() { sql.Register("sqlite3_regex", &sqlite3.SQLiteDriver{ -- cgit v1.2.3