refac: atomic merge, lost-update race, RunPurge cost, duplicated walks

This commit is contained in:
Florian Sylvain committed 2026-10-21 22:47:46 +02:00
1 parent 0fc3511e2b
commit 074944c99a
45 files changed
+2204 -267

No files matched your search

+12 -7
View File
@@ -51,12 +51,12 @@ func validateField(field contenttype.Field, data map[string]any) error {
value := data[field.Key]
if value == nil {
if field.Required {
return invalidField(field.Key, RuleRequired)
return InvalidField(field.Key, RuleRequired)
}
return nil
}
if rule := field.Violation(value); rule != "" {
return invalidField(field.Key, rule)
return InvalidField(field.Key, rule)
}
return nil
}
@@ -76,7 +76,7 @@ func firstUnknownField(fields []contenttype.Field, data map[string]any) error {
return nil
}
sort.Strings(unknown)
return invalidField(unknown[0], RuleUnknownField)
return InvalidField(unknown[0], RuleUnknownField)
}
func UniqueValues(fields []contenttype.Field, data map[string]any) []UniqueValue {
@@ -91,10 +91,15 @@ func UniqueValues(fields []contenttype.Field, data map[string]any) []UniqueValue
func MediaIDs(fields []contenttype.Field, data map[string]any) map[string]uint32 {
ids := map[string]uint32{}
for _, field := range contenttype.MediaFields(fields) {
if id, ok := contenttype.MediaID(data[field.Key]); ok {
ids[field.Key] = id
}
for _, ref := range contenttype.MediaRefs(fields, data) {
ids[ref.Field.Key] = ref.ID
}
return ids
}
func MissingMedia(field contenttype.Field, unchanged bool) error {
if unchanged {
return InvalidField(field.Key, RuleRequired)
}
return InvalidField(field.Key, contenttype.RuleType)
}