diff --git a/data/view/genfunc/def.go b/data/view/genfunc/def.go index 21f0280..c269546 100644 --- a/data/view/genfunc/def.go +++ b/data/view/genfunc/def.go @@ -9,9 +9,9 @@ import ( "github.com/jinzhu/gorm" ) -var gloabIsRelated bool // 全局预加载 +var globalIsRelated bool // 全局预加载 -// prepare for outher +// prepare for other type _BaseMgr struct { *gorm.DB ctx *context.Context @@ -61,12 +61,12 @@ func (f optionFunc) apply(o *options) { // OpenRelated 打开全局预加载 func OpenRelated() { - gloabIsRelated = true + globalIsRelated = true } // CloseRelated 关闭全局预加载 func CloseRelated() { - gloabIsRelated = true + globalIsRelated = true } ` @@ -81,7 +81,7 @@ func {{$obj.StructName}}Mgr(db *gorm.DB) *_{{$obj.StructName}}Mgr { if db == nil { panic(fmt.Errorf("{{$obj.StructName}}Mgr need init by db")) } - return &_{{$obj.StructName}}Mgr{_BaseMgr: &_BaseMgr{DB: db, isRelated: gloabIsRelated}} + return &_{{$obj.StructName}}Mgr{_BaseMgr: &_BaseMgr{DB: db, isRelated: globalIsRelated}} } // GetTableName get sql table name.获取数据库名字 diff --git a/data/view/genfunc/model/gen.base.go b/data/view/genfunc/model/gen.base.go index 7ddbc57..0abda15 100644 --- a/data/view/genfunc/model/gen.base.go +++ b/data/view/genfunc/model/gen.base.go @@ -6,9 +6,9 @@ import ( "github.com/jinzhu/gorm" ) -var gloabIsRelated bool // 全局预加载 +var globalIsRelated bool // 全局预加载 -// prepare for outher +// prepare for other type _BaseMgr struct { *gorm.DB ctx *context.Context @@ -57,10 +57,10 @@ func (f optionFunc) apply(o *options) { // OpenRelated 打开全局预加载 func OpenRelated() { - gloabIsRelated = true + globalIsRelated = true } // CloseRelated 关闭全局预加载 func CloseRelated() { - gloabIsRelated = true + globalIsRelated = true } diff --git a/data/view/genfunc/model/matrix.gen.account.go b/data/view/genfunc/model/matrix.gen.account.go index 6042ad7..95e9468 100644 --- a/data/view/genfunc/model/matrix.gen.account.go +++ b/data/view/genfunc/model/matrix.gen.account.go @@ -15,7 +15,7 @@ func AccountMgr(db *gorm.DB) *_AccountMgr { if db == nil { panic(fmt.Errorf("AccountMgr need init by db")) } - return &_AccountMgr{_BaseMgr: &_BaseMgr{DB: db, isRelated: gloabIsRelated}} + return &_AccountMgr{_BaseMgr: &_BaseMgr{DB: db, isRelated: globalIsRelated}} } // GetTableName get sql table name.获取数据库名字 diff --git a/data/view/genfunc/model/matrix.gen.user.go b/data/view/genfunc/model/matrix.gen.user.go index a6e81c5..652f7ac 100644 --- a/data/view/genfunc/model/matrix.gen.user.go +++ b/data/view/genfunc/model/matrix.gen.user.go @@ -15,7 +15,7 @@ func UserMgr(db *gorm.DB) *_UserMgr { if db == nil { panic(fmt.Errorf("UserMgr need init by db")) } - return &_UserMgr{_BaseMgr: &_BaseMgr{DB: db, isRelated: gloabIsRelated}} + return &_UserMgr{_BaseMgr: &_BaseMgr{DB: db, isRelated: globalIsRelated}} } // GetTableName get sql table name.获取数据库名字 diff --git a/data/view/gtools/gtools_test.go b/data/view/gtools/gtools_test.go index adc3649..5fdd392 100644 --- a/data/view/gtools/gtools_test.go +++ b/data/view/gtools/gtools_test.go @@ -16,6 +16,6 @@ func TestTools(t *testing.T) { // out, _ := json.Marshal(pkg) // tools.WriteFile("test.txt", []string{string(out)}, true) - list := model.Generate(pkg) + list, _ := model.Generate(pkg) fmt.Println(list) } diff --git a/data/view/model/common.go b/data/view/model/common.go index df51b6b..ccd7923 100644 --- a/data/view/model/common.go +++ b/data/view/model/common.go @@ -94,7 +94,7 @@ func getGormModelElement() []EmInfo { return result } -func buildFList(list *[]FList, key ColumusKey, keyName, tp, colName string) { +func buildFList(list *[]FList, key ColumnsKey, keyName, tp, colName string) { for i := 0; i < len(*list); i++ { if (*list)[i].KeyName == keyName { (*list)[i].Kem = append((*list)[i].Kem, FEm{ @@ -171,14 +171,14 @@ func GenFListIndex(info FList, status int) string { func widthFunctionName(info FList) string { switch info.Key { - // case ColumusKeyDefault: - case ColumusKeyPrimary: // primary key.主键 + // case ColumnsKeyDefault: + case ColumnsKeyPrimary: // primary key.主键 return "FetchByPrimaryKey" - case ColumusKeyUnique: // unique key.唯一索引 + case ColumnsKeyUnique: // unique key.唯一索引 return "FetchByUnique" - case ColumusKeyIndex: // index key.复合索引 + case ColumnsKeyIndex: // index key.复合索引 return "FetchBy" + getCamelName(info.KeyName) + "Index" - case ColumusKeyUniqueIndex: // unique index key.唯一复合索引 + case ColumnsKeyUniqueIndex: // unique index key.唯一复合索引 return "FetchBy" + getCamelName(info.KeyName) + "UniqueIndex" } diff --git a/data/view/model/def.go b/data/view/model/def.go index bec383b..0eb4c8f 100644 --- a/data/view/model/def.go +++ b/data/view/model/def.go @@ -5,20 +5,20 @@ const ( // _tagJSON = "json" ) -// ColumusKey Columus type elem. 类型枚举 -type ColumusKey int +// ColumnsKey Columns type elem. 类型枚举 +type ColumnsKey int const ( - // ColumusKeyDefault default - ColumusKeyDefault = iota - // ColumusKeyPrimary primary key.主键 - ColumusKeyPrimary - // ColumusKeyUnique unique key.唯一索引 - ColumusKeyUnique - // ColumusKeyIndex index key.复合索引 - ColumusKeyIndex - // ColumusKeyUniqueIndex unique index key.唯一复合索引 - ColumusKeyUniqueIndex + // ColumnsKeyDefault default + ColumnsKeyDefault = iota + // ColumnsKeyPrimary primary key.主键 + ColumnsKeyPrimary + // ColumnsKeyUnique unique key.唯一索引 + ColumnsKeyUnique + // ColumnsKeyIndex index key.复合索引 + ColumnsKeyIndex + // ColumnsKeyUniqueIndex unique index key.唯一复合索引 + ColumnsKeyUniqueIndex ) // DBInfo database default info @@ -32,11 +32,11 @@ type DBInfo struct { type TabInfo struct { BaseInfo SQLBuildStr string // Create SQL statements.创建sql语句 - Em []ColumusInfo // Columus list .表列表组合 + Em []ColumnsInfo // Columns list .表列表组合 } -// ColumusInfo Columus list .表列信息 -type ColumusInfo struct { +// ColumnsInfo Columns list .表列信息 +type ColumnsInfo struct { BaseInfo Type string // Type.类型标记 Index []KList // index list.index列表 @@ -52,7 +52,7 @@ type ForeignKey struct { // KList database index /unique_index list.数据库index /unique_index 列表 type KList struct { - Key ColumusKey // non_unique of (show keys from [table]) + Key ColumnsKey // non_unique of (show keys from [table]) KeyName string // key_name of (show keys from [table]) } @@ -92,7 +92,7 @@ type FEm struct { // FList index of list type FList struct { - Key ColumusKey // non_unique of (show keys from [table]) + Key ColumnsKey // non_unique of (show keys from [table]) KeyName string // key_name of (show keys from [table]) Kem []FEm } diff --git a/data/view/model/genmysql/genmysql.go b/data/view/model/genmysql/genmysql.go index af06019..4b45371 100644 --- a/data/view/model/genmysql/genmysql.go +++ b/data/view/model/genmysql/genmysql.go @@ -2,6 +2,7 @@ package genmysql import ( "fmt" + "sort" "strings" "github.com/xxjwxc/gormt/data/config" @@ -59,8 +60,9 @@ func (m *mysqlModel) GetPkgName() string { } func getPackageInfo(orm *mysqldb.MySqlDB, info *model.DBInfo) { - tabls := getTables(orm) // get table and notes - for tabName, notes := range tabls { + tables := getTables(orm) // get table and notes + + for tabName, notes := range tables { var tab model.TabInfo tab.Name = tabName tab.Notes = notes @@ -86,10 +88,14 @@ func getPackageInfo(orm *mysqldb.MySqlDB, info *model.DBInfo) { info.TabList = append(info.TabList, tab) } + // sort tables + sort.Slice(info.TabList, func(i, j int) bool { + return info.TabList[i].Name < info.TabList[j].Name + }) } // getTableElement Get table columns and comments.获取表列及注释 -func getTableElement(orm *mysqldb.MySqlDB, tab string) (el []model.ColumusInfo) { +func getTableElement(orm *mysqldb.MySqlDB, tab string) (el []model.ColumnsInfo) { keyNums := make(map[string]int) // get keys var Keys []keys @@ -104,7 +110,7 @@ func getTableElement(orm *mysqldb.MySqlDB, tab string) (el []model.ColumusInfo) orm.Raw("show FULL COLUMNS from " + tab).Scan(&list) // filter gorm.Model.过滤 gorm.Model if filterModel(&list) { - el = append(el, model.ColumusInfo{ + el = append(el, model.ColumnsInfo{ Type: "gorm.Model", }) } @@ -119,7 +125,7 @@ func getTableElement(orm *mysqldb.MySqlDB, tab string) (el []model.ColumusInfo) // ------------------end for _, v := range list { - var tmp model.ColumusInfo + var tmp model.ColumnsInfo tmp.Name = v.Field tmp.Notes = v.Desc tmp.Type = v.Type @@ -127,20 +133,20 @@ func getTableElement(orm *mysqldb.MySqlDB, tab string) (el []model.ColumusInfo) // keys if strings.EqualFold(v.Key, "PRI") { // Set primary key.设置主键 tmp.Index = append(tmp.Index, model.KList{ - Key: model.ColumusKeyPrimary, + Key: model.ColumnsKeyPrimary, }) } else if strings.EqualFold(v.Key, "UNI") { // unique tmp.Index = append(tmp.Index, model.KList{ - Key: model.ColumusKeyUnique, + Key: model.ColumnsKeyUnique, }) } else { for _, v1 := range Keys { if strings.EqualFold(v1.ColumnName, v.Field) { var k model.KList if v1.NonUnique == 1 { // index - k.Key = model.ColumusKeyIndex + k.Key = model.ColumnsKeyIndex } else { - k.Key = model.ColumusKeyUniqueIndex + k.Key = model.ColumnsKeyUniqueIndex } if keyNums[v1.KeyName] > 1 { // Composite index.复合索引 k.KeyName = v1.KeyName diff --git a/data/view/model/model.go b/data/view/model/model.go index dbc1ad8..48273a0 100644 --- a/data/view/model/model.go +++ b/data/view/model/model.go @@ -41,7 +41,7 @@ func Generate(info DBInfo) (out []GenOutInfo, m _Model) { return } -// GetPackage gen sturct on table +// GetPackage gen struct on table func (m *_Model) GetPackage() genstruct.GenPackage { if m.pkg == nil { var pkg genstruct.GenPackage @@ -67,7 +67,7 @@ func (m *_Model) generate() string { } // genTableElement Get table columns and comments.获取表列及注释 -func (m *_Model) genTableElement(cols []ColumusInfo) (el []genstruct.GenElement) { +func (m *_Model) genTableElement(cols []ColumnsInfo) (el []genstruct.GenElement) { _tagGorm := config.GetDBTag() _tagJSON := config.GetURLTag() @@ -81,14 +81,14 @@ func (m *_Model) genTableElement(cols []ColumusInfo) (el []genstruct.GenElement) tmp.SetType(getTypeName(v.Type)) for _, v1 := range v.Index { switch v1.Key { - // case ColumusKeyDefault: - case ColumusKeyPrimary: // primary key.主键 + // case ColumnsKeyDefault: + case ColumnsKeyPrimary: // primary key.主键 tmp.AddTag(_tagGorm, "primary_key") - case ColumusKeyUnique: // unique key.唯一索引 + case ColumnsKeyUnique: // unique key.唯一索引 tmp.AddTag(_tagGorm, "unique") - case ColumusKeyIndex: // index key.复合索引 + case ColumnsKeyIndex: // index key.复合索引 tmp.AddTag(_tagGorm, getUninStr("index", ":", v1.KeyName)) - case ColumusKeyUniqueIndex: // unique index key.唯一复合索引 + case ColumnsKeyUniqueIndex: // unique index key.唯一复合索引 tmp.AddTag(_tagGorm, getUninStr("unique_index", ":", v1.KeyName)) } } @@ -128,12 +128,12 @@ func (m *_Model) genTableElement(cols []ColumusInfo) (el []genstruct.GenElement) } // genForeignKey Get information about foreign key of table column.获取表列外键相关信息 -func (m *_Model) genForeignKey(col ColumusInfo) (fklist []genstruct.GenElement) { +func (m *_Model) genForeignKey(col ColumnsInfo) (fklist []genstruct.GenElement) { _tagGorm := config.GetDBTag() _tagJSON := config.GetURLTag() for _, v := range col.ForeignKeyList { - isMulti, isFind, notes := m.getColumusKeyMulti(v.TableName, v.ColumnName) + isMulti, isFind, notes := m.getColumnsKeyMulti(v.TableName, v.ColumnName) if isFind { var tmp genstruct.GenElement tmp.SetNotes(notes) @@ -160,7 +160,7 @@ func (m *_Model) genForeignKey(col ColumusInfo) (fklist []genstruct.GenElement) return } -func (m *_Model) getColumusKeyMulti(tableName, col string) (isMulti bool, isFind bool, notes string) { +func (m *_Model) getColumnsKeyMulti(tableName, col string) (isMulti bool, isFind bool, notes string) { var haveGomod bool for _, v := range m.info.TabList { if strings.EqualFold(v.Name, tableName) { @@ -168,11 +168,11 @@ func (m *_Model) getColumusKeyMulti(tableName, col string) (isMulti bool, isFind if strings.EqualFold(v1.Name, col) { for _, v2 := range v1.Index { switch v2.Key { - case ColumusKeyPrimary, ColumusKeyUnique, ColumusKeyUniqueIndex: // primary key unique key . 主键,唯一索引 + case ColumnsKeyPrimary, ColumnsKeyUnique, ColumnsKeyUniqueIndex: // primary key unique key . 主键,唯一索引 { return false, true, v.Notes } - // case ColumusKeyIndex: // index key. 复合索引 + // case ColumnsKeyIndex: // index key. 复合索引 // { // isMulti = true // } @@ -237,24 +237,24 @@ func (m *_Model) generateFunc() (genOut []GenOutInfo) { if strings.EqualFold(el.Type, "gorm.Model") { data.Em = append(data.Em, getGormModelElement()...) pkg.AddImport(`"time"`) - buildFList(&primary, ColumusKeyPrimary, "", "int64", "id") + buildFList(&primary, ColumnsKeyPrimary, "", "int64", "id") } else { typeName := getTypeName(el.Type) isMulti := true for _, v1 := range el.Index { switch v1.Key { - // case ColumusKeyDefault: - case ColumusKeyPrimary: // primary key.主键 + // case ColumnsKeyDefault: + case ColumnsKeyPrimary: // primary key.主键 isMulti = false - buildFList(&primary, ColumusKeyPrimary, "", typeName, el.Name) - case ColumusKeyUnique: // unique key.唯一索引 + buildFList(&primary, ColumnsKeyPrimary, "", typeName, el.Name) + case ColumnsKeyUnique: // unique key.唯一索引 isMulti = false - buildFList(&unique, ColumusKeyUnique, "", typeName, el.Name) - case ColumusKeyIndex: // index key.复合索引 - buildFList(&index, ColumusKeyIndex, v1.KeyName, typeName, el.Name) - case ColumusKeyUniqueIndex: // unique index key.唯一复合索引 + buildFList(&unique, ColumnsKeyUnique, "", typeName, el.Name) + case ColumnsKeyIndex: // index key.复合索引 + buildFList(&index, ColumnsKeyIndex, v1.KeyName, typeName, el.Name) + case ColumnsKeyUniqueIndex: // unique index key.唯一复合索引 isMulti = false - buildFList(&uniqueIndex, ColumusKeyUniqueIndex, v1.KeyName, typeName, el.Name) + buildFList(&uniqueIndex, ColumnsKeyUniqueIndex, v1.KeyName, typeName, el.Name) } } @@ -274,7 +274,7 @@ func (m *_Model) generateFunc() (genOut []GenOutInfo) { // 外键列表 for _, v := range el.ForeignKeyList { - isMulti, isFind, notes := m.getColumusKeyMulti(v.TableName, v.ColumnName) + isMulti, isFind, notes := m.getColumnsKeyMulti(v.TableName, v.ColumnName) if isFind { var info PreloadInfo info.IsMulti = isMulti diff --git a/data/view/model/model_test.go b/data/view/model/model_test.go index 47dd2ca..a22749d 100644 --- a/data/view/model/model_test.go +++ b/data/view/model/model_test.go @@ -15,12 +15,12 @@ func TestTools(t *testing.T) { // out, _ := json.Marshal(pkg) // tools.WriteFile("test.txt", []string{string(out)}, true) - list := Generate(pkg) + list, _ := Generate(pkg) fmt.Println(list) config.SetSingularTable(true) config.SetSingularTable(true) config.SetForeignKey(true) - list = Generate(pkg) + list, _ = Generate(pkg) fmt.Println(list) }