@@ -256,14 +256,24 @@ func (m *Method) getMany(buf *file.Buffer) error {
256
256
if m .config ["references" ] != "" {
257
257
parentTable := mapping .TableName (m .entity , m .config ["table" ])
258
258
refFields := strings .Split (m .config ["references" ], "," )
259
- for _ , fieldName := range refFields {
259
+ refs := make ([]* Mapping , len (refFields ))
260
+ for i , fieldName := range refFields {
260
261
refMapping , err := Parse (m .localPath , m .pkgs , fieldName , m .kind )
261
262
if err != nil {
262
263
return fmt .Errorf ("Parse entity struct: %w" , err )
263
264
}
264
265
265
- defer func () { _ = m . getRefs ( buf , parentTable , refMapping ) }()
266
+ refs [ len ( refs ) - 1 - i ] = refMapping
266
267
}
268
+
269
+ defer func () {
270
+ for _ , refMapping := range refs {
271
+ err = m .getRefs (buf , parentTable , refMapping )
272
+ if err != nil {
273
+ return
274
+ }
275
+ }
276
+ }()
267
277
}
268
278
269
279
// Go type name the objects to return (e.g. api.Foo).
@@ -792,14 +802,24 @@ func (m *Method) create(buf *file.Buffer, replace bool) error {
792
802
if m .config ["references" ] != "" {
793
803
parentTable := mapping .TableName (m .entity , m .config ["table" ])
794
804
refFields := strings .Split (m .config ["references" ], "," )
795
- for _ , fieldName := range refFields {
805
+ refs := make ([]* Mapping , len (refFields ))
806
+ for i , fieldName := range refFields {
796
807
refMapping , err := Parse (m .localPath , m .pkgs , fieldName , m .kind )
797
808
if err != nil {
798
809
return fmt .Errorf ("Parse entity struct: %w" , err )
799
810
}
800
811
801
- defer func () { _ = m . createRefs ( buf , parentTable , refMapping ) }()
812
+ refs [ len ( refs ) - 1 - i ] = refMapping
802
813
}
814
+
815
+ defer func () {
816
+ for _ , refMapping := range refs {
817
+ err = m .createRefs (buf , parentTable , refMapping )
818
+ if err != nil {
819
+ return
820
+ }
821
+ }
822
+ }()
803
823
}
804
824
805
825
err = m .signature (buf , false )
@@ -1083,15 +1103,26 @@ func (m *Method) update(buf *file.Buffer) error {
1083
1103
1084
1104
if m .config ["references" ] != "" {
1085
1105
refFields := strings .Split (m .config ["references" ], "," )
1086
- for _ , fieldName := range refFields {
1087
- parentTable := mapping .TableName (m .entity , m .config ["table" ])
1106
+ parentTable := mapping .TableName (m .entity , m .config ["table" ])
1107
+ refs := make ([]* Mapping , len (refFields ))
1108
+ for i , fieldName := range refFields {
1088
1109
refMapping , err := Parse (m .localPath , m .pkgs , fieldName , m .kind )
1089
1110
if err != nil {
1090
1111
return fmt .Errorf ("Parse entity struct: %w" , err )
1091
1112
}
1092
1113
1093
- defer func () { _ = m . updateRefs ( buf , parentTable , refMapping ) }()
1114
+ refs [ len ( refs ) - 1 - i ] = refMapping
1094
1115
}
1116
+
1117
+ defer func () {
1118
+ for _ , refMapping := range refs {
1119
+ err = m .updateRefs (buf , parentTable , refMapping )
1120
+ if err != nil {
1121
+ return
1122
+ }
1123
+ }
1124
+ }()
1125
+
1095
1126
}
1096
1127
1097
1128
nk := mapping .NaturalKey ()
0 commit comments