feat: relation field and picker

This commit is contained in:
Florian Sylvain committed 2026-10-23 00:13:42 +02:00
1 parent b45c99be3b
commit 37a77c9c22
92 files changed
+6826 -80

No files matched your search

@@ -11,15 +11,29 @@ type TypedEntry struct {
entry.Entry
ContentTypeKey string
Media map[string]EntryMedia
Relations map[string]EntryRelations
}
func typedEntry(owner contenttype.ContentType, record entry.Entry, resolver *mediaResolver) (TypedEntry, error) {
type entryResolvers struct {
media *mediaResolver
relations *relationResolver
}
func newEntryResolvers(images image.Repository, contentTypes contenttype.Repository, entries entry.Repository) *entryResolvers {
return &entryResolvers{media: newMediaResolver(images), relations: newRelationResolver(contentTypes, entries)}
}
func typedEntry(owner contenttype.ContentType, record entry.Entry, resolvers *entryResolvers) (TypedEntry, error) {
record.Data = entry.Project(owner.Fields, record.Data)
media, err := resolver.resolve(owner, record)
media, err := resolvers.media.resolve(owner, record)
if err != nil {
return TypedEntry{}, err
}
return TypedEntry{Entry: record, ContentTypeKey: owner.Key, Media: media}, nil
relations, err := resolvers.relations.resolve(owner, record)
if err != nil {
return TypedEntry{}, err
}
return TypedEntry{Entry: record, ContentTypeKey: owner.Key, Media: media, Relations: relations}, nil
}
func ensureMediaExists(images image.Repository, owner contenttype.ContentType, data map[string]any, stored map[string]any) error {