From 80fa7f83926d2dbcb3f9e8c5510f4a9c50e53f64 Mon Sep 17 00:00:00 2001 From: Eric Phillips Date: Thu, 21 May 2026 22:33:57 -0600 Subject: [PATCH] refactor for using repomaint --- cmd/server/handler_api.go | 2 +- cmd/server/handler_test.go | 11 ++++++++++- cmd/server/main.go | 10 +++++++++- internal/cache/refresh.go | 6 +++--- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/cmd/server/handler_api.go b/cmd/server/handler_api.go index 6cea328..09488af 100644 --- a/cmd/server/handler_api.go +++ b/cmd/server/handler_api.go @@ -18,7 +18,7 @@ func (s *Server) handlerRefresh(w http.ResponseWriter, req *http.Request) { return } - if err := s.c.Refresh(); err != nil { + if err := s.rs.Sync(); err != nil { slog.Error("refresh failed", "err", err) http.Error(w, "refresh failed", http.StatusInternalServerError) return diff --git a/cmd/server/handler_test.go b/cmd/server/handler_test.go index f859ce9..6ad6da0 100644 --- a/cmd/server/handler_test.go +++ b/cmd/server/handler_test.go @@ -11,6 +11,7 @@ import ( "testing" "github.com/ewpt3ch/pkgstash/internal/cache" + "github.com/ewpt3ch/pkgstash/internal/repomaint" ) var ( @@ -36,7 +37,10 @@ func newTestServer(t *testing.T, mirrorHandler http.HandlerFunc) (*httptest.Serv mirror := httptest.NewServer(mirrorHandler) t.Cleanup(func() { mirror.Close() }) - c, err := cache.NewCache(t.TempDir(), []string{mirror.URL + "/"}, []string{"core"}) + croot := t.TempDir() + mrepos := []string{"core"} + + c, err := cache.NewCache(croot, []string{mirror.URL + "/"}, mrepos) if err != nil { t.Fatalf("failed to create cache: %v", err) } @@ -44,10 +48,15 @@ func newTestServer(t *testing.T, mirrorHandler http.HandlerFunc) (*httptest.Serv Port: "0", Token: "testtoken", } + rs, err := repomaint.NewRepoSync(c, croot, mrepos) + if err != nil { + t.Fatalf("failed to create repomain: %v", err) + } logLevel := new(slog.LevelVar) srv := &Server{ cfg: cfg, c: c, + rs: rs, logLevel: logLevel, } diff --git a/cmd/server/main.go b/cmd/server/main.go index 73ce788..96b881f 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -12,11 +12,13 @@ import ( "time" "github.com/ewpt3ch/pkgstash/internal/cache" + "github.com/ewpt3ch/pkgstash/internal/repomaint" ) type Server struct { cfg *Config c *cache.Cache + rs *repomaint.RepoSync logLevel *slog.LevelVar } @@ -58,9 +60,15 @@ func main() { } defer c.Close() //nolint:errcheck // best effort cleanup on exit + rs, err := repomaint.NewRepoSync(c, cfg.CacheRoot, cfg.MirroredRepos) + if err != nil { + slog.Error("failed to create repomaint", "err", err) + } + srv := &Server{ cfg: cfg, c: c, + rs: rs, logLevel: logLevel, } @@ -69,7 +77,7 @@ func main() { mux.HandleFunc("POST /api/refresh", srv.handlerRefresh) mux.HandleFunc("POST /api/loglevel", srv.handlerLogLevel) - if err := srv.c.Refresh(); err != nil { + if err := srv.c.FetchDB(); err != nil { slog.Error("failed to refesh db files", "err", err) //nolint:errcheck //already exiting _ = c.Close() // best effort cleanup on exit diff --git a/internal/cache/refresh.go b/internal/cache/refresh.go index 01fa3f1..cc65dc8 100644 --- a/internal/cache/refresh.go +++ b/internal/cache/refresh.go @@ -2,21 +2,21 @@ package cache import "path/filepath" -func (c *Cache) Refresh() error { +func (c *Cache) FetchDB() error { if !c.refreshMu.TryLock() { return nil } defer c.refreshMu.Unlock() for _, repo := range c.cfg.mirroredRepos { - if err := c.refreshDB(repo); err != nil { + if err := c.fetchDB(repo); err != nil { return err } } return nil } -func (c *Cache) refreshDB(repo string) error { +func (c *Cache) fetchDB(repo string) error { dbFile := repo + ".db.tar.gz" dbPath := filepath.Join(repo, "os/x86_64", dbFile) _, _, err := c.getStream(dbPath)