MCPcopy
hub / github.com/go-gorm/gorm / setRelation

Method setRelation

schema/relationship.go:147–181  ·  view source on GitHub ↗
(relation *Relationship)

Source from the content-addressed store, hash-verified

145}
146
147func (schema *Schema) setRelation(relation *Relationship) {
148 schema.Relationships.Mux.Lock()
149 defer schema.Relationships.Mux.Unlock()
150
151 // set non-embedded relation
152 if rel := schema.Relationships.Relations[relation.Name]; rel != nil {
153 if len(rel.Field.BindNames) > 1 {
154 schema.Relationships.Relations[relation.Name] = relation
155 }
156 } else {
157 schema.Relationships.Relations[relation.Name] = relation
158 }
159
160 // set embedded relation
161 if len(relation.Field.EmbeddedBindNames) <= 1 {
162 return
163 }
164 relationships := &schema.Relationships
165 for i, name := range relation.Field.EmbeddedBindNames {
166 if i < len(relation.Field.EmbeddedBindNames)-1 {
167 if relationships.EmbeddedRelations == nil {
168 relationships.EmbeddedRelations = map[string]*Relationships{}
169 }
170 if r := relationships.EmbeddedRelations[name]; r == nil {
171 relationships.EmbeddedRelations[name] = &Relationships{}
172 }
173 relationships = relationships.EmbeddedRelations[name]
174 } else {
175 if relationships.Relations == nil {
176 relationships.Relations = map[string]*Relationship{}
177 }
178 relationships.Relations[relation.Name] = relation
179 }
180 }
181}
182
183// User has many Toys, its `Polymorphic` is `Owner`, Pet has one Toy, its `Polymorphic` is `Owner`
184//

Callers 1

parseRelationMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected