From 21fd5c844690d583e4c40a82f3a6c97cd7be2831 Mon Sep 17 00:00:00 2001 From: matst80 Date: Wed, 15 Oct 2025 09:31:54 +0200 Subject: [PATCH] id fix --- cmd/backoffice/fileserver.go | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/cmd/backoffice/fileserver.go b/cmd/backoffice/fileserver.go index a797c99..4d878ee 100644 --- a/cmd/backoffice/fileserver.go +++ b/cmd/backoffice/fileserver.go @@ -43,12 +43,13 @@ func listCartFiles(dir string) ([]CartFileInfo, error) { name := e.Name() var id uint64 var parseErr error - if strings.HasPrefix(name, "{") && strings.HasSuffix(name, "}.events.log") { - idStr := strings.TrimSuffix(strings.TrimPrefix(name, "{"), "}.events.log") + parts := strings.Split(name, ".") + if len(parts) == 2 && parts[1] == "events.log" { + idStr := parts[0] + id, parseErr = strconv.ParseUint(idStr, 10, 64) + } else if len(parts) == 3 && parts[1] == "events" && parts[2] == "log" { + idStr := parts[0] id, parseErr = strconv.ParseUint(idStr, 10, 64) - } else if strings.HasSuffix(name, ".events.log") { - base := strings.TrimSuffix(name, ".events.log") - id, parseErr = strconv.ParseUint(base, 10, 64) } else { continue } @@ -133,18 +134,15 @@ func (fs *FileServer) CartHandler(w http.ResponseWriter, r *http.Request) { writeJSON(w, http.StatusBadRequest, map[string]string{"error": "missing id"}) return } - // normalize idStr: support "{123}.events.log", "{123}", "123.events.log", "123" - if strings.HasPrefix(idStr, "{") && strings.HasSuffix(idStr, "}.events.log") { - idStr = strings.TrimSuffix(strings.TrimPrefix(idStr, "{"), "}.events.log") - } else if strings.HasPrefix(idStr, "{") && strings.HasSuffix(idStr, "}") { - idStr = strings.TrimSuffix(strings.TrimPrefix(idStr, "{"), "}") - } else if strings.HasSuffix(idStr, ".events.log") { - idStr = strings.TrimSuffix(idStr, ".events.log") - } + id, err := strconv.ParseUint(idStr, 10, 64) if err != nil { - writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid id"}) - return + if cartId, ok := cart.ParseCartId(idStr); !ok { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid id"}) + return + } else { + id = uint64(cartId) + } } // reconstruct state from event log if present grain := cart.NewCartGrain(id, time.Now())