From 79151422b0ac85f5efbd6bf0c2345d8152ceb9cf Mon Sep 17 00:00:00 2001 From: Natercio Moniz Date: Mon, 12 Oct 2026 22:58:09 +0100 Subject: [PATCH] include latest and earliest record times in state --- internal/json_store.go | 25 +++++++++++++++++++------ internal/state.go | 3 +++ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/internal/json_store.go b/internal/json_store.go index ad43c91..f0268ce 100644 --- a/internal/json_store.go +++ b/internal/json_store.go @@ -96,11 +96,9 @@ func (fs *JSONStore) Load(ctx context.Context) (map[string]*FillerQueue, error) // the same directory followed by an atomic rename so a crash mid-write cannot // leave a half-written state file. func (fs *JSONStore) Save(ctx context.Context, queue map[string]*FillerQueue) error { - state := State{ - Version: StateVersion, - Platform: fs.platform, - Queues: make(map[string][]persistedFiller), - } + queues := make(map[string][]persistedFiller) + latest := time.Time{} + earliest := time.Time{} for symbol, q := range queue { if q == nil || q.Len() == 0 { @@ -119,8 +117,23 @@ func (fs *JSONStore) Save(ctx context.Context, queue map[string]*FillerQueue) er Price: f.Price(), Filled: f.Filled(), }) + + if f.Timestamp().After(latest) { + latest = f.Timestamp() + } + if f.Timestamp().Before(earliest) || earliest.IsZero() { + earliest = f.Timestamp() + } } - state.Queues[symbol] = persisted + queues[symbol] = persisted + } + + state := State{ + Version: StateVersion, + Platform: fs.platform, + Queues: queues, + Latest: latest, + Earliest: earliest, } buf := &bytes.Buffer{} diff --git a/internal/state.go b/internal/state.go index 10cb8c2..53ae36b 100644 --- a/internal/state.go +++ b/internal/state.go @@ -3,6 +3,7 @@ package internal import ( "context" "encoding/json" + "time" "github.com/shopspring/decimal" ) @@ -15,6 +16,8 @@ const StateVersion = "2" type State struct { Version string `json:"version"` Platform string `json:"platform"` + Latest time.Time `json:"latest"` + Earliest time.Time `json:"earliest"` Queues map[string][]persistedFiller `json:"queues"` }