From 94166136276521786edf4ca6537abc6df1f7702e Mon Sep 17 00:00:00 2001 From: Bel LaPointe Date: Wed, 11 Oct 2023 16:03:57 -0600 Subject: [PATCH] Fill and expose oplog in cache-service --- render-2023-10-11/cmd/cache-service/oplog.go | 4 ++-- render-2023-10-11/cmd/cache-service/server.go | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/render-2023-10-11/cmd/cache-service/oplog.go b/render-2023-10-11/cmd/cache-service/oplog.go index 7a61406..eefb5a7 100644 --- a/render-2023-10-11/cmd/cache-service/oplog.go +++ b/render-2023-10-11/cmd/cache-service/oplog.go @@ -16,8 +16,8 @@ type timestampedEvent struct { } // gotcha duration? bigger N? whatever -func NewOplog() Oplog { - return Oplog{ +func NewOplog() *Oplog { + return &Oplog{ events: make([]timestampedEvent, 0, 1024), } } diff --git a/render-2023-10-11/cmd/cache-service/server.go b/render-2023-10-11/cmd/cache-service/server.go index 45942b1..2254926 100644 --- a/render-2023-10-11/cmd/cache-service/server.go +++ b/render-2023-10-11/cmd/cache-service/server.go @@ -5,16 +5,20 @@ import ( "log" "net/http" "render231011/internal/thestore" + "strconv" "strings" + "time" ) type Server struct { store *thestore.Store + oplog *Oplog } func NewServer() Server { return Server{ store: thestore.NewStore(), + oplog: NewOplog(), } } @@ -40,8 +44,20 @@ func (server Server) servePostEvent(w http.ResponseWriter, r *http.Request) { // todo check if action==updated service-id already exists server.store.Push(newEvent) log.Printf("ingested event %+v", newEvent) + + // todo store the op log + server.oplog.Push(newEvent) } func (server Server) serveGetEvents(w http.ResponseWriter, r *http.Request) { // todo my circular queue magic + sinceString := r.URL.Query().Get("since") + sinceInt, err := strconv.ParseInt(sinceString, 10, 64) + if err != nil { + panic(err) + } + since := time.Unix(sinceInt, 0) + + result := server.oplog.Since(since) + json.NewEncoder(w).Encode(result) }