Add comment support on create table [mysql only currently] (#616)

* add comment support on create table

* remove wrong file
This commit is contained in:
Lunny Xiao 2017-06-14 14:16:40 +08:00 committed by GitHub
parent 233706969a
commit f86679d536
2 changed files with 45 additions and 1 deletions

9
tag.go
View File

@ -54,6 +54,7 @@ var (
"UNIQUE": UniqueTagHandler, "UNIQUE": UniqueTagHandler,
"CACHE": CacheTagHandler, "CACHE": CacheTagHandler,
"NOCACHE": NoCacheTagHandler, "NOCACHE": NoCacheTagHandler,
"COMMENT": CommentTagHandler,
} }
) )
@ -192,6 +193,14 @@ func UniqueTagHandler(ctx *tagContext) error {
return nil return nil
} }
// CommentTagHandler add comment to column
func CommentTagHandler(ctx *tagContext) error {
if len(ctx.params) > 0 {
ctx.col.Comment = strings.Trim(ctx.params[0], "' ")
}
return nil
}
// SQLTypeTagHandler describes SQL Type tag handler // SQLTypeTagHandler describes SQL Type tag handler
func SQLTypeTagHandler(ctx *tagContext) error { func SQLTypeTagHandler(ctx *tagContext) error {
ctx.col.SQLType = core.SQLType{Name: ctx.tagName} ctx.col.SQLType = core.SQLType{Name: ctx.tagName}

View File

@ -10,6 +10,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/go-xorm/core"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
@ -235,3 +236,37 @@ func TestAutoIncrTag(t *testing.T) {
assert.True(t, cols[0].IsPrimaryKey) assert.True(t, cols[0].IsPrimaryKey)
assert.Equal(t, "id", cols[0].Name) assert.Equal(t, "id", cols[0].Name)
} }
func TestTagComment(t *testing.T) {
assert.NoError(t, prepareEngine())
// FIXME: only support mysql
if testEngine.dialect.DriverName() != core.MYSQL {
return
}
type TestComment1 struct {
Id int64 `xorm:"comment(主键)"`
}
assert.NoError(t, testEngine.Sync2(new(TestComment1)))
tables, err := testEngine.DBMetas()
assert.NoError(t, err)
assert.EqualValues(t, 1, len(tables))
assert.EqualValues(t, 1, len(tables[0].Columns()))
assert.EqualValues(t, "主键", tables[0].Columns()[0].Comment)
assert.NoError(t, testEngine.DropTables(new(TestComment1)))
type TestComment2 struct {
Id int64 `xorm:"comment('主键')"`
}
assert.NoError(t, testEngine.Sync2(new(TestComment2)))
tables, err = testEngine.DBMetas()
assert.NoError(t, err)
assert.EqualValues(t, 1, len(tables))
assert.EqualValues(t, 1, len(tables[0].Columns()))
assert.EqualValues(t, "主键", tables[0].Columns()[0].Comment)
}