Skip to content

Commit

Permalink
fix: tag
Browse files Browse the repository at this point in the history
  • Loading branch information
qqxhb authored and tr1v3r committed Apr 20, 2023
1 parent 6dcb6bf commit fe1f9ea
Show file tree
Hide file tree
Showing 12 changed files with 79 additions and 42 deletions.
2 changes: 1 addition & 1 deletion examples/cmd/from_object/prepare.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ func (f *DemoField) GORMTag() string { return f.gormTag }
func (f *DemoField) JSONTag() string { return f.jsonTag }

// Tag return new tag
func (f *DemoField) Tag() field.Tag { return field.NewTag() }
func (f *DemoField) Tag() field.Tag { return field.Tag{} }

// Comment return comment
func (f *DemoField) Comment() string { return f.comment }
4 changes: 2 additions & 2 deletions field/association.go
Original file line number Diff line number Diff line change
Expand Up @@ -239,13 +239,13 @@ func (c *RelateConfig) RelateFieldPrefix(relationshipType RelationshipType) stri
}
func (c *RelateConfig) GetTag(fieldName string) Tag {
if c == nil {
return NewTag()
return Tag{}
}
if c.OverwriteTag != nil {
return c.OverwriteTag
}
if c.Tag == nil {
c.Tag = NewTag()
c.Tag = Tag{}
}
if c.JSONTag == "" {
c.JSONTag = ns.ColumnName("", fieldName)
Expand Down
20 changes: 8 additions & 12 deletions field/tag.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,16 +44,14 @@ type TagBuilder interface {

type Tag map[string]string

func NewTag() Tag {
return Tag{}
}

func (tag Tag) Set(key, value string) {
func (tag Tag) Set(key, value string) Tag {
tag[key] = value
return tag
}

func (tag Tag) Remove(key string) {
func (tag Tag) Remove(key string) Tag {
delete(tag, key)
return tag
}

func (tag Tag) Build() string {
Expand All @@ -75,16 +73,14 @@ func (tag Tag) Build() string {

type GormTag Tag

func NewGormTag() GormTag {
return GormTag{}
}

func (tag GormTag) Set(key, value string) {
func (tag GormTag) Set(key, value string) GormTag {
tag[key] = value
return tag
}

func (tag GormTag) Remove(key string) {
func (tag GormTag) Remove(key string) GormTag {
delete(tag, key)
return tag
}

func (tag GormTag) Build() string {
Expand Down
10 changes: 10 additions & 0 deletions field_options.go
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,16 @@ var (
return m
}
}
// FieldGORMTagReg specify GORM tag by RegExp
FieldGORMTagReg = func(columnNameReg string, gormTag func(tag field.GormTag) field.GormTag) model.ModifyFieldOpt {
reg := regexp.MustCompile(columnNameReg)
return func(m *model.Field) *model.Field {
if reg.MatchString(m.ColumnName) {
m.GORMTag = gormTag(m.GORMTag)
}
return m
}
}
// FieldNewTag add new tag
FieldNewTag = func(columnName string, newTag field.Tag) model.ModifyFieldOpt {
return func(m *model.Field) *model.Field {
Expand Down
4 changes: 2 additions & 2 deletions internal/generate/export.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,12 +87,12 @@ func GetQueryStructMetaFromObject(obj helper.Object, conf *model.Config) (*Query
for _, fl := range obj.Fields() {
tag := fl.Tag()
if tag == nil {
tag = field.NewTag()
tag = field.Tag{}
}
if gt := fl.GORMTag(); gt != "" {
tag.Set(field.TagKeyGorm, gt)
}
if jt := fl.GORMTag(); jt != "" {
if jt := fl.JSONTag(); jt != "" {
tag.Set(field.TagKeyJson, jt)
}

Expand Down
16 changes: 8 additions & 8 deletions internal/model/tbl_column.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ import (
// Column table column's info
type Column struct {
gorm.ColumnType
TableName string `gorm:"column:TABLE_NAME"`
Indexes []*Index `gorm:"-"`
UseScanType bool `gorm:"-"`
TableName string `gorm:"column:TABLE_NAME"`
Indexes []*Index `gorm:"-"`
UseScanType bool `gorm:"-"`
dataTypeMap map[string]func(columnType gorm.ColumnType) (dataType string) `gorm:"-"`
jsonTagNS func(columnName string) string `gorm:"-"`
jsonTagNS func(columnName string) string `gorm:"-"`
}

// SetDataTypeMap set data type map
Expand Down Expand Up @@ -82,10 +82,10 @@ func (c *Column) multilineComment() bool {
}

func (c *Column) buildGormTag() field.GormTag {
tag := field.NewGormTag()
tag.Set(field.TagKeyGormColumn, c.Name())
tag.Set(field.TagKeyGormType, c.columnType())

tag := field.GormTag{
field.TagKeyGormColumn: c.Name(),
field.TagKeyGormType: c.columnType(),
}
isPriKey, ok := c.PrimaryKey()
isValidPriKey := ok && isPriKey
if isValidPriKey {
Expand Down
6 changes: 6 additions & 0 deletions internal/template/model.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,13 @@ import (
// {{.ModelStructName}} {{.StructComment}}
type {{.ModelStructName}} struct {
{{range .Fields}}
{{if .MultilineComment -}}
/*
{{.ColumnComment}}
*/
{{end -}}
{{.Name}} {{.Type}} ` + "`{{.Tags}}` " +
"{{if not .MultilineComment}}{{if .ColumnComment}}// {{.ColumnComment}}{{end}}{{end}}" +
`{{end}}
}
Expand Down
13 changes: 9 additions & 4 deletions tests/.expect/dal_1/model/users.gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 9 additions & 4 deletions tests/.expect/dal_2/model/users.gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 9 additions & 4 deletions tests/.expect/dal_3/model/users.gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 9 additions & 4 deletions tests/.expect/dal_4/model/users.gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 6 additions & 1 deletion tests/generate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"time"

"gorm.io/gen"
"gorm.io/gen/field"

"gorm.io/gen/tests/diy_method"
)
Expand Down Expand Up @@ -60,7 +61,11 @@ var generateCase = map[string]func(dir string) *gen.Generator{
})
g.UseDB(DB)
g.WithJSONTagNameStrategy(func(c string) string { return "-" })
g.ApplyBasic(g.GenerateAllTable()...)
g.ApplyBasic(g.GenerateAllTable(gen.FieldGORMTagReg(".", func(tag field.GormTag) field.GormTag {
//tag.Set("serialize","json")
tag.Remove("comment")
return tag
}))...)
return g
},
generateDirPrefix + "dal_4": func(dir string) *gen.Generator {
Expand Down

0 comments on commit fe1f9ea

Please sign in to comment.