From d19bb8b7cd4b0449bafafde17717e4f219176c05 Mon Sep 17 00:00:00 2001 From: alexkung Date: Mon, 15 Sep 2025 17:41:30 +0800 Subject: [PATCH 1/9] fix https://github.com/go-gorm/cli/issues/15 *gorm.Model --- .idea/.gitignore | 8 +++++ .idea/cli.iml | 9 +++++ .idea/copilot.data.migration.agent.xml | 6 ++++ .idea/copilot.data.migration.edit.xml | 6 ++++ .idea/modules.xml | 8 +++++ .idea/vcs.xml | 6 ++++ examples/models/user.go | 2 +- examples/output/models/user.go | 13 ++++--- internal/gen/generator.go | 48 +++++++++++++++++--------- 9 files changed, 82 insertions(+), 24 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/cli.iml create mode 100644 .idea/copilot.data.migration.agent.xml create mode 100644 .idea/copilot.data.migration.edit.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..35410ca --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/cli.iml b/.idea/cli.iml new file mode 100644 index 0000000..5e764c4 --- /dev/null +++ b/.idea/cli.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/copilot.data.migration.agent.xml b/.idea/copilot.data.migration.agent.xml new file mode 100644 index 0000000..4ea72a9 --- /dev/null +++ b/.idea/copilot.data.migration.agent.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/copilot.data.migration.edit.xml b/.idea/copilot.data.migration.edit.xml new file mode 100644 index 0000000..8648f94 --- /dev/null +++ b/.idea/copilot.data.migration.edit.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..6fcc0dc --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/examples/models/user.go b/examples/models/user.go index 49bb617..2b2adcf 100644 --- a/examples/models/user.go +++ b/examples/models/user.go @@ -12,7 +12,7 @@ import ( // He speaks many languages (many to many) and has many friends (many to many - single-table) // His pet also has one Toy (has one - polymorphic) type User struct { - gorm.Model + *gorm.Model Name string Age int Birthday *time.Time diff --git a/examples/output/models/user.go b/examples/output/models/user.go index 7bf2397..e7f4601 100644 --- a/examples/output/models/user.go +++ b/examples/output/models/user.go @@ -5,7 +5,6 @@ package models import ( "database/sql" - "gorm.io/cli/gorm/examples" "gorm.io/cli/gorm/examples/models" "gorm.io/cli/gorm/field" "gorm.io/gorm" @@ -20,7 +19,7 @@ var User = struct { Age field.Number[int] Birthday field.Time Score field.Field[sql.NullInt64] - LastLogin field.Time + LastLogin field.Field[sql.NullTime] Account field.Struct[models.Account] Pets field.Slice[models.Pet] Toys field.Slice[models.Toy] @@ -33,7 +32,7 @@ var User = struct { Friends field.Slice[models.User] Role field.String IsAdult field.Bool - Profile examples.JSON + Profile field.String }{ ID: field.Number[uint]{}.WithColumn("id"), CreatedAt: field.Time{}.WithColumn("created_at"), @@ -43,7 +42,7 @@ var User = struct { Age: field.Number[int]{}.WithColumn("age"), Birthday: field.Time{}.WithColumn("birthday"), Score: field.Field[sql.NullInt64]{}.WithColumn("score"), - LastLogin: field.Time{}.WithColumn("last_login"), + LastLogin: field.Field[sql.NullTime]{}.WithColumn("last_login"), Account: field.Struct[models.Account]{}.WithName("Account"), Pets: field.Slice[models.Pet]{}.WithName("Pets"), Toys: field.Slice[models.Toy]{}.WithName("Toys"), @@ -56,7 +55,7 @@ var User = struct { Friends: field.Slice[models.User]{}.WithName("Friends"), Role: field.String{}.WithColumn("role"), IsAdult: field.Bool{}.WithColumn("is_adult"), - Profile: examples.JSON{}.WithColumn("profile"), + Profile: field.String{}.WithColumn("profile"), } var Account = struct { @@ -67,7 +66,7 @@ var Account = struct { UserID field.Field[sql.NullInt64] Number field.String RewardPoints field.Field[sql.NullInt64] - LastUsedAt field.Time + LastUsedAt field.Field[sql.NullTime] }{ ID: field.Number[uint]{}.WithColumn("id"), CreatedAt: field.Time{}.WithColumn("created_at"), @@ -76,7 +75,7 @@ var Account = struct { UserID: field.Field[sql.NullInt64]{}.WithColumn("user_id"), Number: field.String{}.WithColumn("number"), RewardPoints: field.Field[sql.NullInt64]{}.WithColumn("reward_points"), - LastUsedAt: field.Time{}.WithColumn("last_used_at"), + LastUsedAt: field.Field[sql.NullTime]{}.WithColumn("last_used_at"), } var Pet = struct { diff --git a/internal/gen/generator.go b/internal/gen/generator.go index b256205..ad06e9c 100644 --- a/internal/gen/generator.go +++ b/internal/gen/generator.go @@ -730,34 +730,50 @@ func (p *File) getFullImportPath(shortName string) string { // handleAnonymousEmbedding processes anonymous embedded fields and returns true if handled func (p *File) handleAnonymousEmbedding(field *ast.Field, pkgName string, s *Struct) bool { - switch t := field.Type.(type) { + // Helper function to add fields from embedded struct + addEmbeddedFields := func(structType *ast.StructType, typeName, embeddedPkgName string) bool { + sub := p.processStructType(&ast.TypeSpec{Name: &ast.Ident{Name: typeName}}, structType, embeddedPkgName) + s.Fields = append(s.Fields, sub.Fields...) + return true + } + + // Helper function to load and process external struct type + loadAndProcessExternalStruct := func(pkgName, typeName string) bool { + st, err := loadNamedStructType(findGoModDir(p.inputPath), p.getFullImportPath(pkgName), typeName) + if err != nil || st == nil { + return false + } + return addEmbeddedFields(st, typeName, pkgName) + } + + // Unwrap pointer types to get the underlying type + fieldType := field.Type + if starExpr, ok := fieldType.(*ast.StarExpr); ok { + fieldType = starExpr.X + } + + switch t := fieldType.(type) { case *ast.Ident: - // Local type embedding + // Local type embedding (e.g., BaseStruct or *BaseStruct) if t.Obj != nil { if ts, ok := t.Obj.Decl.(*ast.TypeSpec); ok { if st, ok := ts.Type.(*ast.StructType); ok { - sub := p.processStructType(ts, st, pkgName) - s.Fields = append(s.Fields, sub.Fields...) - return true + return addEmbeddedFields(st, t.Name, pkgName) } } } + case *ast.SelectorExpr: - // External package type embedding + // External package type embedding (e.g., pkg.BaseStruct or *pkg.BaseStruct) if pkgIdent, ok := t.X.(*ast.Ident); ok { - st, err := loadNamedStructType(findGoModDir(p.inputPath), p.getFullImportPath(pkgIdent.Name), t.Sel.Name) - if err == nil && st != nil { - sub := p.processStructType(&ast.TypeSpec{Name: &ast.Ident{Name: t.Sel.Name}}, st, pkgIdent.Name) - s.Fields = append(s.Fields, sub.Fields...) - return true - } + return loadAndProcessExternalStruct(pkgIdent.Name, t.Sel.Name) } + case *ast.StructType: - // Anonymous inline struct embedding - sub := p.processStructType(&ast.TypeSpec{Name: &ast.Ident{Name: "AnonymousStruct"}}, t, pkgName) - s.Fields = append(s.Fields, sub.Fields...) - return true + // Anonymous inline struct embedding (e.g., struct{...}) + return addEmbeddedFields(t, "AnonymousStruct", pkgName) } return false + } From 920459ee291e8db3785d8a42563c64da0c2bf76a Mon Sep 17 00:00:00 2001 From: alexkung Date: Mon, 15 Sep 2025 17:43:52 +0800 Subject: [PATCH 2/9] fix https://github.com/go-gorm/cli/issues/15 *gorm.Model --- .gitignore | 143 +++++++++++++++++++++++++ .idea/.gitignore | 8 -- .idea/cli.iml | 9 -- .idea/copilot.data.migration.agent.xml | 6 -- .idea/copilot.data.migration.edit.xml | 6 -- .idea/modules.xml | 8 -- .idea/vcs.xml | 6 -- 7 files changed, 143 insertions(+), 43 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/cli.iml delete mode 100644 .idea/copilot.data.migration.agent.xml delete mode 100644 .idea/copilot.data.migration.edit.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/vcs.xml diff --git a/.gitignore b/.gitignore index f14e057..853fe85 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,145 @@ +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib + +# Test binary, built with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Dependency directories (remove the comment below to include it) +# vendor/ + +# Go workspace file +go.work + +# Build output g gorm +/bin/ +/build/ +/dist/ + +# IDE and Editor files +.idea/ +.vscode/ +*.swp +*.swo +*~ + +# OS generated files +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db + +# Log files +*.log + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Coverage directory used by tools like istanbul +coverage/ + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node_modules (if using Node.js tools) +node_modules/ + +# Temporary folders +tmp/ +temp/ + +# Go module download cache +$GOPATH/pkg/mod/ + +# Go build cache +$GOCACHE/ + +# Air live reload +tmp/ + +# Local environment variables +.env +.env.local +.env.*.local + +# Database files +*.db +*.sqlite +*.sqlite3 + +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +# cgo generated files +_cgo_gotypes.go +_cgo_export.* + +# test generated files +*_test_gen.go + +# Ignore generated documentation +*.html + +# Ignore backup files +*.bak +*.backup +*.orig + +# Ignore profiling files +*.prof +cpu.out +mem.out +profile.out + +# Ignore security sensitive files +*.pem +*.key +*.crt +*.p12 + +# Docker files (if not needed in repo) +# Dockerfile +# docker-compose.yml +# .dockerignore + +# Kubernetes files (if not needed in repo) +# *.yaml +# *.yml + +# Generated code (if applicable) +# *_gen.go +# *.pb.go + +# Config files with sensitive data +config.json +secrets.yaml +secrets.yml diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 35410ca..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# 默认忽略的文件 -/shelf/ -/workspace.xml -# 基于编辑器的 HTTP 客户端请求 -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/.idea/cli.iml b/.idea/cli.iml deleted file mode 100644 index 5e764c4..0000000 --- a/.idea/cli.iml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/copilot.data.migration.agent.xml b/.idea/copilot.data.migration.agent.xml deleted file mode 100644 index 4ea72a9..0000000 --- a/.idea/copilot.data.migration.agent.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/copilot.data.migration.edit.xml b/.idea/copilot.data.migration.edit.xml deleted file mode 100644 index 8648f94..0000000 --- a/.idea/copilot.data.migration.edit.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 6fcc0dc..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1dd..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file From a05330a840559eeb6019badb3b093de0d9aa4f0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BE=9A=E4=B8=80=E6=B6=9B?= Date: Mon, 15 Sep 2025 18:07:16 +0800 Subject: [PATCH 3/9] Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- internal/gen/generator.go | 1 - 1 file changed, 1 deletion(-) diff --git a/internal/gen/generator.go b/internal/gen/generator.go index ad06e9c..fc14de9 100644 --- a/internal/gen/generator.go +++ b/internal/gen/generator.go @@ -775,5 +775,4 @@ func (p *File) handleAnonymousEmbedding(field *ast.Field, pkgName string, s *Str } return false - } From 488a7688fa22fddb33c09e261e4618471b7877e6 Mon Sep 17 00:00:00 2001 From: alexkung Date: Mon, 15 Sep 2025 18:17:23 +0800 Subject: [PATCH 4/9] caching findGoModDir(p.inputPath) --- internal/gen/generator.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/internal/gen/generator.go b/internal/gen/generator.go index ad06e9c..67a7af1 100644 --- a/internal/gen/generator.go +++ b/internal/gen/generator.go @@ -37,6 +37,7 @@ type ( applicableConfigs []*genconfig.Config inputPath string relPath string + goModDir string // 缓存的 go mod 目录路径 Generator *Generator } Import struct { @@ -243,6 +244,7 @@ func (g *Generator) processFile(inputFile, inputRoot string) error { Package: f.Name.Name, inputPath: inputFile, relPath: relPath, + goModDir: findGoModDir(inputFile), // 初始化时缓存 go mod 目录 Generator: g, } @@ -426,7 +428,7 @@ func (f Field) Type() string { return fmt.Sprintf("field.Number[%s]", goType) } - if typ := loadNamedType(findGoModDir(f.file.inputPath), f.file.getFullImportPath(pkgName), typName); typ != nil { + if typ := loadNamedType(f.file.goModDir, f.file.getFullImportPath(pkgName), typName); typ != nil { if ImplementsAllowedInterfaces(typ) { // For interface-implementing types, use generic Field return fmt.Sprintf("field.Field[%s]", filepath.Base(goType)) } @@ -739,7 +741,7 @@ func (p *File) handleAnonymousEmbedding(field *ast.Field, pkgName string, s *Str // Helper function to load and process external struct type loadAndProcessExternalStruct := func(pkgName, typeName string) bool { - st, err := loadNamedStructType(findGoModDir(p.inputPath), p.getFullImportPath(pkgName), typeName) + st, err := loadNamedStructType(p.goModDir, p.getFullImportPath(pkgName), typeName) if err != nil || st == nil { return false } From 590632f7b944bf86a055a2dc6cf5f0d03725a7ba Mon Sep 17 00:00:00 2001 From: alexkung Date: Tue, 16 Sep 2025 09:31:34 +0800 Subject: [PATCH 5/9] fix models examples --- examples/models/user.go | 7 ++++++- examples/output/models/user.go | 14 ++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/examples/models/user.go b/examples/models/user.go index 2b2adcf..825740a 100644 --- a/examples/models/user.go +++ b/examples/models/user.go @@ -12,7 +12,7 @@ import ( // He speaks many languages (many to many) and has many friends (many to many - single-table) // His pet also has one Toy (has one - polymorphic) type User struct { - *gorm.Model + gorm.Model Name string Age int Birthday *time.Time @@ -64,3 +64,8 @@ type Language struct { Code string `gorm:"primarykey"` Name string } + +type CreditCard struct { + *gorm.Model + Number string +} diff --git a/examples/output/models/user.go b/examples/output/models/user.go index e7f4601..d0e9f29 100644 --- a/examples/output/models/user.go +++ b/examples/output/models/user.go @@ -129,3 +129,17 @@ var Language = struct { Code: field.String{}.WithColumn("code"), Name: field.String{}.WithColumn("name"), } + +var CreditCard = struct { + ID field.Number[uint] + CreatedAt field.Time + UpdatedAt field.Time + DeletedAt field.Field[gorm.DeletedAt] + Number field.String +}{ + ID: field.Number[uint]{}.WithColumn("id"), + CreatedAt: field.Time{}.WithColumn("created_at"), + UpdatedAt: field.Time{}.WithColumn("updated_at"), + DeletedAt: field.Field[gorm.DeletedAt]{}.WithColumn("deleted_at"), + Number: field.String{}.WithColumn("number"), +} From ae1324f4c99f3c69787fd8f61d90a7f4b5900289 Mon Sep 17 00:00:00 2001 From: alexkung Date: Tue, 16 Sep 2025 09:55:44 +0800 Subject: [PATCH 6/9] fix models examples --- examples/output/models_field_helpers_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/output/models_field_helpers_test.go b/examples/output/models_field_helpers_test.go index d223ca0..e400c47 100644 --- a/examples/output/models_field_helpers_test.go +++ b/examples/output/models_field_helpers_test.go @@ -346,7 +346,7 @@ func TestGeneratedModels_FieldTypes(t *testing.T) { _ field.Number[int] = generated.User.Age _ field.Time = generated.User.Birthday _ field.Field[sql.NullInt64] = generated.User.Score - _ field.Time = generated.User.LastLogin + _ field.Field[sql.NullTime] = generated.User.LastLogin _ field.Number[int] = generated.User.CompanyID _ field.Number[uint] = generated.User.ManagerID _ field.String = generated.User.Role From 30c6e4f49318379cb46dc9ccc23b7799db785c57 Mon Sep 17 00:00:00 2001 From: alexkung Date: Tue, 16 Sep 2025 10:22:09 +0800 Subject: [PATCH 7/9] fix models examples --- examples/output/models/user.go | 13 +++++++------ examples/output/models_field_helpers_test.go | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/examples/output/models/user.go b/examples/output/models/user.go index d0e9f29..ffd9ad4 100644 --- a/examples/output/models/user.go +++ b/examples/output/models/user.go @@ -5,6 +5,7 @@ package models import ( "database/sql" + "gorm.io/cli/gorm/examples" "gorm.io/cli/gorm/examples/models" "gorm.io/cli/gorm/field" "gorm.io/gorm" @@ -19,7 +20,7 @@ var User = struct { Age field.Number[int] Birthday field.Time Score field.Field[sql.NullInt64] - LastLogin field.Field[sql.NullTime] + LastLogin field.Time Account field.Struct[models.Account] Pets field.Slice[models.Pet] Toys field.Slice[models.Toy] @@ -32,7 +33,7 @@ var User = struct { Friends field.Slice[models.User] Role field.String IsAdult field.Bool - Profile field.String + Profile examples.JSON }{ ID: field.Number[uint]{}.WithColumn("id"), CreatedAt: field.Time{}.WithColumn("created_at"), @@ -42,7 +43,7 @@ var User = struct { Age: field.Number[int]{}.WithColumn("age"), Birthday: field.Time{}.WithColumn("birthday"), Score: field.Field[sql.NullInt64]{}.WithColumn("score"), - LastLogin: field.Field[sql.NullTime]{}.WithColumn("last_login"), + LastLogin: field.Time{}.WithColumn("last_login"), Account: field.Struct[models.Account]{}.WithName("Account"), Pets: field.Slice[models.Pet]{}.WithName("Pets"), Toys: field.Slice[models.Toy]{}.WithName("Toys"), @@ -55,7 +56,7 @@ var User = struct { Friends: field.Slice[models.User]{}.WithName("Friends"), Role: field.String{}.WithColumn("role"), IsAdult: field.Bool{}.WithColumn("is_adult"), - Profile: field.String{}.WithColumn("profile"), + Profile: examples.JSON{}.WithColumn("profile"), } var Account = struct { @@ -66,7 +67,7 @@ var Account = struct { UserID field.Field[sql.NullInt64] Number field.String RewardPoints field.Field[sql.NullInt64] - LastUsedAt field.Field[sql.NullTime] + LastUsedAt field.Time }{ ID: field.Number[uint]{}.WithColumn("id"), CreatedAt: field.Time{}.WithColumn("created_at"), @@ -75,7 +76,7 @@ var Account = struct { UserID: field.Field[sql.NullInt64]{}.WithColumn("user_id"), Number: field.String{}.WithColumn("number"), RewardPoints: field.Field[sql.NullInt64]{}.WithColumn("reward_points"), - LastUsedAt: field.Field[sql.NullTime]{}.WithColumn("last_used_at"), + LastUsedAt: field.Time{}.WithColumn("last_used_at"), } var Pet = struct { diff --git a/examples/output/models_field_helpers_test.go b/examples/output/models_field_helpers_test.go index e400c47..d223ca0 100644 --- a/examples/output/models_field_helpers_test.go +++ b/examples/output/models_field_helpers_test.go @@ -346,7 +346,7 @@ func TestGeneratedModels_FieldTypes(t *testing.T) { _ field.Number[int] = generated.User.Age _ field.Time = generated.User.Birthday _ field.Field[sql.NullInt64] = generated.User.Score - _ field.Field[sql.NullTime] = generated.User.LastLogin + _ field.Time = generated.User.LastLogin _ field.Number[int] = generated.User.CompanyID _ field.Number[uint] = generated.User.ManagerID _ field.String = generated.User.Role From 09eff3279d6e8ca3f81f15fa93eb3e87d8afe624 Mon Sep 17 00:00:00 2001 From: alexkung Date: Tue, 16 Sep 2025 10:23:48 +0800 Subject: [PATCH 8/9] test: add created CreditCard fields for test *gorm.Model --- examples/output/models_field_helpers_test.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/examples/output/models_field_helpers_test.go b/examples/output/models_field_helpers_test.go index d223ca0..ffcced4 100644 --- a/examples/output/models_field_helpers_test.go +++ b/examples/output/models_field_helpers_test.go @@ -396,6 +396,13 @@ func TestGeneratedModels_FieldTypes(t *testing.T) { // Language _ field.String = generated.Language.Code _ field.String = generated.Language.Name + + // CreditCard + _ field.Number[uint] = generated.CreditCard.ID + _ field.Time = generated.CreditCard.CreatedAt + _ field.Time = generated.CreditCard.UpdatedAt + _ field.Field[gorm.DeletedAt] = generated.CreditCard.DeletedAt + _ field.String = generated.CreditCard.Number ) } From 698ac246b8fa867056140d1b667a9a29939f1208 Mon Sep 17 00:00:00 2001 From: Jinzhu Date: Wed, 17 Sep 2025 19:59:11 +0800 Subject: [PATCH 9/9] Refactor goModDir comments for clarity --- internal/gen/generator.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/gen/generator.go b/internal/gen/generator.go index 814db65..9ed55aa 100644 --- a/internal/gen/generator.go +++ b/internal/gen/generator.go @@ -37,7 +37,7 @@ type ( applicableConfigs []*genconfig.Config inputPath string relPath string - goModDir string // 缓存的 go mod 目录路径 + goModDir string Generator *Generator } Import struct { @@ -244,7 +244,7 @@ func (g *Generator) processFile(inputFile, inputRoot string) error { Package: f.Name.Name, inputPath: inputFile, relPath: relPath, - goModDir: findGoModDir(inputFile), // 初始化时缓存 go mod 目录 + goModDir: findGoModDir(inputFile), Generator: g, }