Modify Comment to TableComment & moved into parser.Parse
This commit is contained in:
parent
b1d6ec1db5
commit
72efd4ed00
|
@ -14,8 +14,13 @@ type TableName interface {
|
||||||
TableName() string
|
TableName() string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type TableComment interface {
|
||||||
|
TableComment() string
|
||||||
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
tpTableName = reflect.TypeOf((*TableName)(nil)).Elem()
|
tpTableName = reflect.TypeOf((*TableName)(nil)).Elem()
|
||||||
|
tpTableComment = reflect.TypeOf((*TableComment)(nil)).Elem()
|
||||||
tvCache sync.Map
|
tvCache sync.Map
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -55,3 +60,12 @@ func GetTableName(mapper Mapper, v reflect.Value) string {
|
||||||
|
|
||||||
return mapper.Obj2Table(v.Type().Name())
|
return mapper.Obj2Table(v.Type().Name())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetTableComment returns table comment
|
||||||
|
func GetTableComment(v reflect.Value) string {
|
||||||
|
if v.Type().Implements(tpTableComment) {
|
||||||
|
return v.Interface().(TableComment).TableComment()
|
||||||
|
}
|
||||||
|
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
|
@ -90,14 +90,6 @@ func (parser *Parser) ParseWithCache(v reflect.Value) (*schemas.Table, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// if bean has Comment Method, then set table.Comment
|
|
||||||
if _, ok := t.MethodByName("Comment"); ok {
|
|
||||||
tableCommentFn := v.MethodByName("Comment")
|
|
||||||
if tableCommentFn.Type().String() == "func() string" {
|
|
||||||
table.Comment = fmt.Sprintf("%s", tableCommentFn.Call(nil)[0])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
parser.tableCache.Store(t, table)
|
parser.tableCache.Store(t, table)
|
||||||
|
|
||||||
if parser.cacherMgr.GetDefaultCacher() != nil {
|
if parser.cacherMgr.GetDefaultCacher() != nil {
|
||||||
|
@ -324,6 +316,7 @@ func (parser *Parser) Parse(v reflect.Value) (*schemas.Table, error) {
|
||||||
table := schemas.NewEmptyTable()
|
table := schemas.NewEmptyTable()
|
||||||
table.Type = t
|
table.Type = t
|
||||||
table.Name = names.GetTableName(parser.tableMapper, v)
|
table.Name = names.GetTableName(parser.tableMapper, v)
|
||||||
|
table.Comment = names.GetTableComment(v)
|
||||||
|
|
||||||
for i := 0; i < t.NumField(); i++ {
|
for i := 0; i < t.NumField(); i++ {
|
||||||
col, err := parser.parseField(table, i, t.Field(i), v.Field(i))
|
col, err := parser.parseField(table, i, t.Field(i), v.Field(i))
|
||||||
|
|
|
@ -26,6 +26,10 @@ func (p ParseTableName2) TableName() string {
|
||||||
return "p_parseTableName"
|
return "p_parseTableName"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p ParseTableName2) TableComment() string {
|
||||||
|
return "p2_testTableComment"
|
||||||
|
}
|
||||||
|
|
||||||
func TestParseTableName(t *testing.T) {
|
func TestParseTableName(t *testing.T) {
|
||||||
parser := NewParser(
|
parser := NewParser(
|
||||||
"xorm",
|
"xorm",
|
||||||
|
@ -47,6 +51,27 @@ func TestParseTableName(t *testing.T) {
|
||||||
assert.EqualValues(t, "p_parseTableName", table.Name)
|
assert.EqualValues(t, "p_parseTableName", table.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestParseTableComment(t *testing.T) {
|
||||||
|
parser := NewParser(
|
||||||
|
"xorm",
|
||||||
|
dialects.QueryDialect("mysql"),
|
||||||
|
names.SnakeMapper{},
|
||||||
|
names.SnakeMapper{},
|
||||||
|
caches.NewManager(),
|
||||||
|
)
|
||||||
|
table, err := parser.Parse(reflect.ValueOf(new(ParseTableName1)))
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.EqualValues(t, "", table.Comment)
|
||||||
|
|
||||||
|
table, err = parser.Parse(reflect.ValueOf(new(ParseTableName2)))
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.EqualValues(t, "p2_testTableComment", table.Comment)
|
||||||
|
|
||||||
|
table, err = parser.Parse(reflect.ValueOf(ParseTableName2{}))
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.EqualValues(t, "p2_testTableComment", table.Comment)
|
||||||
|
}
|
||||||
|
|
||||||
func TestUnexportField(t *testing.T) {
|
func TestUnexportField(t *testing.T) {
|
||||||
parser := NewParser(
|
parser := NewParser(
|
||||||
"xorm",
|
"xorm",
|
||||||
|
|
Loading…
Reference in New Issue