id fix
Some checks failed
Build and Publish / Metadata (push) Successful in 10s
Build and Publish / BuildAndDeployAmd64 (push) Successful in 1m15s
Build and Publish / BuildAndDeployArm64 (push) Has been cancelled

This commit is contained in:
matst80
2025-10-15 09:31:54 +02:00
parent e1302a8ffa
commit 21fd5c8446

View File

@@ -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 {
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())