add comment support on create table

This commit is contained in:
Lunny Xiao 2017-06-14 14:06:38 +08:00
parent 233706969a
commit c3719e0452
No known key found for this signature in database
GPG Key ID: C3B7C91B632F738A
3 changed files with 47 additions and 1 deletions

2
.sql Normal file
View File

@ -0,0 +1,2 @@
/*Generated by xorm v0.6.2.0605 2017-06-14 14:05:59, from sqlite3 to SQLITE3*/

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"
) )
@ -234,4 +235,38 @@ func TestAutoIncrTag(t *testing.T) {
assert.False(t, cols[0].IsAutoIncrement) assert.False(t, cols[0].IsAutoIncrement)
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)
}