feature/backoffice #6

Merged
mats merged 24 commits from feature/backoffice into main 2025-10-16 09:46:07 +02:00
Showing only changes of commit 21fd5c8446 - Show all commits

View File

@@ -43,12 +43,13 @@ func listCartFiles(dir string) ([]CartFileInfo, error) {
name := e.Name() name := e.Name()
var id uint64 var id uint64
var parseErr error var parseErr error
if strings.HasPrefix(name, "{") && strings.HasSuffix(name, "}.events.log") { parts := strings.Split(name, ".")
idStr := strings.TrimSuffix(strings.TrimPrefix(name, "{"), "}.events.log") 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) 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 { } else {
continue 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"}) writeJSON(w, http.StatusBadRequest, map[string]string{"error": "missing id"})
return 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) id, err := strconv.ParseUint(idStr, 10, 64)
if err != nil { if err != nil {
writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid id"}) if cartId, ok := cart.ParseCartId(idStr); !ok {
return writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid id"})
return
} else {
id = uint64(cartId)
}
} }
// reconstruct state from event log if present // reconstruct state from event log if present
grain := cart.NewCartGrain(id, time.Now()) grain := cart.NewCartGrain(id, time.Now())