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

@@ -24,26 +24,18 @@ func typedEntry(owner contenttype.ContentType, record entry.Entry, resolver *med
func ensureMediaExists(images image.Repository, owner contenttype.ContentType, data map[string]any, stored map[string]any) error {
storedIDs := entry.MediaIDs(owner.Fields, stored)
for _, field := range contenttype.MediaFields(owner.Fields) {
id, set := contenttype.MediaID(data[field.Key])
if !set {
for _, ref := range contenttype.MediaRefs(owner.Fields, data) {
unchanged := stored != nil && storedIDs[ref.Field.Key] == ref.ID
if unchanged && !ref.Field.Required {
continue
}
unchanged := stored != nil && storedIDs[field.Key] == id
if unchanged && !field.Required {
continue
}
exists, err := imageExists(images, id)
exists, err := imageExists(images, ref.ID)
if err != nil {
return err
}
if exists {
continue
if !exists {
return entry.MissingMedia(ref.Field, unchanged)
}
if unchanged {
return entry.InvalidField(field.Key, entry.RuleRequired)
}
return entry.InvalidField(field.Key, contenttype.RuleType)
}
return nil
}