* Fix issues: #725, #740 * Update filed sort Co-authored-by: anqiansong <anqiansong@xiaoheiban.cn>
This commit is contained in:
@@ -90,8 +90,8 @@ func newDefaultOption() Option {
|
||||
}
|
||||
}
|
||||
|
||||
func (g *defaultGenerator) StartFromDDL(source string, withCache bool) error {
|
||||
modelList, err := g.genFromDDL(source, withCache)
|
||||
func (g *defaultGenerator) StartFromDDL(filename string, withCache bool) error {
|
||||
modelList, err := g.genFromDDL(filename, withCache)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -174,21 +174,20 @@ func (g *defaultGenerator) createFile(modelList map[string]string) error {
|
||||
}
|
||||
|
||||
// ret1: key-table name,value-code
|
||||
func (g *defaultGenerator) genFromDDL(source string, withCache bool) (map[string]string, error) {
|
||||
ddlList := g.split(source)
|
||||
func (g *defaultGenerator) genFromDDL(filename string, withCache bool) (map[string]string, error) {
|
||||
m := make(map[string]string)
|
||||
for _, ddl := range ddlList {
|
||||
table, err := parser.Parse(ddl)
|
||||
tables, err := parser.Parse(filename)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, e := range tables {
|
||||
code, err := g.genModel(*e, withCache)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
code, err := g.genModel(*table, withCache)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
m[table.Name.Source()] = code
|
||||
m[e.Name.Source()] = code
|
||||
}
|
||||
|
||||
return m, nil
|
||||
|
||||
@@ -2,6 +2,7 @@ package gen
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
@@ -20,6 +21,11 @@ var source = "CREATE TABLE `test_user` (\n `id` bigint NOT NULL AUTO_INCREMENT,
|
||||
func TestCacheModel(t *testing.T) {
|
||||
logx.Disable()
|
||||
_ = Clean()
|
||||
|
||||
sqlFile := filepath.Join(t.TempDir(), "tmp.sql")
|
||||
err := ioutil.WriteFile(sqlFile, []byte(source), 0777)
|
||||
assert.Nil(t, err)
|
||||
|
||||
dir := filepath.Join(t.TempDir(), "./testmodel")
|
||||
cacheDir := filepath.Join(dir, "cache")
|
||||
noCacheDir := filepath.Join(dir, "nocache")
|
||||
@@ -28,7 +34,7 @@ func TestCacheModel(t *testing.T) {
|
||||
})
|
||||
assert.Nil(t, err)
|
||||
|
||||
err = g.StartFromDDL(source, true)
|
||||
err = g.StartFromDDL(sqlFile, true)
|
||||
assert.Nil(t, err)
|
||||
assert.True(t, func() bool {
|
||||
_, err := os.Stat(filepath.Join(cacheDir, "TestUserModel.go"))
|
||||
@@ -39,7 +45,7 @@ func TestCacheModel(t *testing.T) {
|
||||
})
|
||||
assert.Nil(t, err)
|
||||
|
||||
err = g.StartFromDDL(source, false)
|
||||
err = g.StartFromDDL(sqlFile, false)
|
||||
assert.Nil(t, err)
|
||||
assert.True(t, func() bool {
|
||||
_, err := os.Stat(filepath.Join(noCacheDir, "testusermodel.go"))
|
||||
@@ -50,6 +56,11 @@ func TestCacheModel(t *testing.T) {
|
||||
func TestNamingModel(t *testing.T) {
|
||||
logx.Disable()
|
||||
_ = Clean()
|
||||
|
||||
sqlFile := filepath.Join(t.TempDir(), "tmp.sql")
|
||||
err := ioutil.WriteFile(sqlFile, []byte(source), 0777)
|
||||
assert.Nil(t, err)
|
||||
|
||||
dir, _ := filepath.Abs("./testmodel")
|
||||
camelDir := filepath.Join(dir, "camel")
|
||||
snakeDir := filepath.Join(dir, "snake")
|
||||
@@ -61,7 +72,7 @@ func TestNamingModel(t *testing.T) {
|
||||
})
|
||||
assert.Nil(t, err)
|
||||
|
||||
err = g.StartFromDDL(source, true)
|
||||
err = g.StartFromDDL(sqlFile, true)
|
||||
assert.Nil(t, err)
|
||||
assert.True(t, func() bool {
|
||||
_, err := os.Stat(filepath.Join(camelDir, "TestUserModel.go"))
|
||||
@@ -72,7 +83,7 @@ func TestNamingModel(t *testing.T) {
|
||||
})
|
||||
assert.Nil(t, err)
|
||||
|
||||
err = g.StartFromDDL(source, true)
|
||||
err = g.StartFromDDL(sqlFile, true)
|
||||
assert.Nil(t, err)
|
||||
assert.True(t, func() bool {
|
||||
_, err := os.Stat(filepath.Join(snakeDir, "test_user_model.go"))
|
||||
|
||||
@@ -11,32 +11,28 @@ import (
|
||||
|
||||
func TestGenCacheKeys(t *testing.T) {
|
||||
primaryField := &parser.Field{
|
||||
Name: stringx.From("id"),
|
||||
DataBaseType: "bigint",
|
||||
DataType: "int64",
|
||||
Comment: "自增id",
|
||||
SeqInIndex: 1,
|
||||
Name: stringx.From("id"),
|
||||
DataType: "int64",
|
||||
Comment: "自增id",
|
||||
SeqInIndex: 1,
|
||||
}
|
||||
mobileField := &parser.Field{
|
||||
Name: stringx.From("mobile"),
|
||||
DataBaseType: "varchar",
|
||||
DataType: "string",
|
||||
Comment: "手机号",
|
||||
SeqInIndex: 1,
|
||||
Name: stringx.From("mobile"),
|
||||
DataType: "string",
|
||||
Comment: "手机号",
|
||||
SeqInIndex: 1,
|
||||
}
|
||||
classField := &parser.Field{
|
||||
Name: stringx.From("class"),
|
||||
DataBaseType: "varchar",
|
||||
DataType: "string",
|
||||
Comment: "班级",
|
||||
SeqInIndex: 1,
|
||||
Name: stringx.From("class"),
|
||||
DataType: "string",
|
||||
Comment: "班级",
|
||||
SeqInIndex: 1,
|
||||
}
|
||||
nameField := &parser.Field{
|
||||
Name: stringx.From("name"),
|
||||
DataBaseType: "varchar",
|
||||
DataType: "string",
|
||||
Comment: "姓名",
|
||||
SeqInIndex: 2,
|
||||
Name: stringx.From("name"),
|
||||
DataType: "string",
|
||||
Comment: "姓名",
|
||||
SeqInIndex: 2,
|
||||
}
|
||||
primariCacheKey, uniqueCacheKey := genCacheKeys(parser.Table{
|
||||
Name: stringx.From("user"),
|
||||
@@ -53,23 +49,20 @@ func TestGenCacheKeys(t *testing.T) {
|
||||
nameField,
|
||||
},
|
||||
},
|
||||
NormalIndex: nil,
|
||||
Fields: []*parser.Field{
|
||||
primaryField,
|
||||
mobileField,
|
||||
classField,
|
||||
nameField,
|
||||
{
|
||||
Name: stringx.From("createTime"),
|
||||
DataBaseType: "timestamp",
|
||||
DataType: "time.Time",
|
||||
Comment: "创建时间",
|
||||
Name: stringx.From("createTime"),
|
||||
DataType: "time.Time",
|
||||
Comment: "创建时间",
|
||||
},
|
||||
{
|
||||
Name: stringx.From("updateTime"),
|
||||
DataBaseType: "timestamp",
|
||||
DataType: "time.Time",
|
||||
Comment: "更新时间",
|
||||
Name: stringx.From("updateTime"),
|
||||
DataType: "time.Time",
|
||||
Comment: "更新时间",
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user