@@ -12,6 +12,8 @@ import (
1212
1313// Generate Go code for the struct mapping
1414func Generate (m * StructMapping , goPackage string , goFile string , w io.Writer ) (outputFilename string , err error ) {
15+ pkgName := m .MappingTypePackage [strings .LastIndex (m .MappingTypePackage , "/" )+ 1 :]
16+
1517 f := NewFile (goPackage )
1618
1719 f .PackageComment ("Code generated by construct, DO NOT EDIT." )
@@ -22,7 +24,7 @@ func Generate(m *StructMapping, goPackage string, goFile string, w io.Writer) (o
2224
2325 // ChangeSet struct
2426
25- changeSetName , err := generateChangeSetStruct (f , m )
27+ changeSetName , err := generateChangeSetStruct (f , m , goPackage )
2628 if err != nil {
2729 return "" , fmt .Errorf ("generating ChangeSet struct: %w" , err )
2830 }
@@ -100,8 +102,12 @@ func Generate(m *StructMapping, goPackage string, goFile string, w io.Writer) (o
100102
101103 toChangeSetBlock = append (toChangeSetBlock , Return ())
102104
105+ mtp := m .MappingTypePackage
106+ if goPackage == pkgName {
107+ mtp = ""
108+ }
103109 f .Func ().Id (firstToUpper (m .TargetName ) + "ToChangeSet" ).Params (
104- Id ("r" ).Qual (m . MappingTypePackage , m .MappingTypeName ),
110+ Id ("r" ).Qual (mtp , m .MappingTypeName ),
105111 ).Params (Id ("c" ).Id (changeSetName )).Block (
106112 toChangeSetBlock ... ,
107113 ).Line ()
@@ -163,7 +169,7 @@ func generateDefaultSelectJsonObject(f *File, m *StructMapping) {
163169 f .Var ().Id (varName ).Op ("=" ).Add (code ).Line ()
164170}
165171
166- func generateChangeSetStruct (f * File , m * StructMapping ) (changeSetName string , err error ) {
172+ func generateChangeSetStruct (f * File , m * StructMapping , pkgDest string ) (changeSetName string , err error ) {
167173 var structFields []Code
168174
169175 for _ , fm := range m .FieldMappings {
@@ -174,8 +180,13 @@ func generateChangeSetStruct(f *File, m *StructMapping) (changeSetName string, e
174180 code .Op ("*" ).Id (v .String ())
175181 case * types.Named :
176182 typeName := v .Obj ()
183+ pkgPath := typeName .Pkg ().Path ()
184+ pkgName := pkgPath [strings .LastIndex (pkgPath , "/" )+ 1 :]
185+ if pkgDest == pkgName {
186+ pkgPath = ""
187+ }
177188 code .Op ("*" ).Qual (
178- typeName . Pkg (). Path () ,
189+ pkgPath ,
179190 typeName .Name (),
180191 )
181192 case * types.Pointer :
@@ -186,8 +197,13 @@ func generateChangeSetStruct(f *File, m *StructMapping) (changeSetName string, e
186197 code .Op ("*" ).Id (v .String ())
187198 case * types.Named :
188199 typeName := v .Obj ()
200+ pkgPath := typeName .Pkg ().Path ()
201+ pkgName := pkgPath [strings .LastIndex (pkgPath , "/" )+ 1 :]
202+ if pkgDest == pkgName {
203+ pkgPath = ""
204+ }
189205 code .Op ("*" ).Qual (
190- typeName . Pkg (). Path () ,
206+ pkgPath ,
191207 typeName .Name (),
192208 )
193209 case * types.Slice :
@@ -203,8 +219,13 @@ func generateChangeSetStruct(f *File, m *StructMapping) (changeSetName string, e
203219 code .Id (v .String ())
204220 case * types.Named :
205221 typeName := v .Obj ()
222+ pkgPath := typeName .Pkg ().Path ()
223+ pkgName := pkgPath [strings .LastIndex (pkgPath , "/" )+ 1 :]
224+ if pkgDest == pkgName {
225+ pkgPath = ""
226+ }
206227 code .Qual (
207- typeName . Pkg (). Path () ,
228+ pkgPath ,
208229 typeName .Name (),
209230 )
210231 default :
0 commit comments