From 6e256da84ce737fea5eab4bf50d82ce99fab583e Mon Sep 17 00:00:00 2001 From: wener Date: Tue, 19 Jan 2021 15:01:02 +0800 Subject: [PATCH] detect embedded by namer --- schema/field.go | 5 +---- schema/schema.go | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/schema/field.go b/schema/field.go index a59b5889..5a672b17 100644 --- a/schema/field.go +++ b/schema/field.go @@ -7,7 +7,6 @@ import ( "reflect" "strconv" "strings" - "sync" "time" "github.com/jinzhu/now" @@ -334,9 +333,7 @@ func (schema *Schema) ParseField(fieldStruct reflect.StructField) *Field { field.Updatable = false field.Readable = false - cacheStore := &sync.Map{} - cacheStore.Store(embeddedCacheKey, true) - cacheStore.Store(schema.ModelType, schema) + cacheStore := schema.cacheStore if field.EmbeddedSchema, err = getOrParse(fieldValue.Interface(), cacheStore, embeddedNamer{Table: schema.Table, Namer: schema.namer}); err != nil { schema.err = err } diff --git a/schema/schema.go b/schema/schema.go index e36ed7b6..055f74b7 100644 --- a/schema/schema.go +++ b/schema/schema.go @@ -230,7 +230,7 @@ func Parse(dest interface{}, cacheStore *sync.Map, namer Namer) (*Schema, error) } defer close(schema.initialized) - if _, embedded := schema.cacheStore.Load(embeddedCacheKey); !embedded { + if _, ok := namer.(embeddedNamer); !ok { for _, field := range schema.Fields { if field.DataType == "" && (field.Creatable || field.Updatable || field.Readable) { if schema.parseRelation(field); schema.err != nil {