添加ui界面
This commit is contained in:
@@ -60,6 +60,33 @@ func (e *GenElement) Generate() string {
|
||||
return p.Generates()[0]
|
||||
}
|
||||
|
||||
// GenerateColor Get the result data.获取结果数据
|
||||
func (e *GenElement) GenerateColor() string {
|
||||
tag := ""
|
||||
if e.Tags != nil {
|
||||
var ks []string
|
||||
for k := range e.Tags {
|
||||
ks = append(ks, k)
|
||||
}
|
||||
sort.Strings(ks)
|
||||
|
||||
var tags []string
|
||||
for _, v := range ks {
|
||||
tags = append(tags, fmt.Sprintf(`%v:"%v"`, v, strings.Join(e.Tags[v], ";")))
|
||||
}
|
||||
tag = fmt.Sprintf("`%v`", strings.Join(tags, " "))
|
||||
}
|
||||
|
||||
var p generate.PrintAtom
|
||||
if len(e.Notes) > 0 {
|
||||
p.Add(e.Name, "\033[32;1m "+e.Type+" \033[0m", "\033[31;1m "+tag+" \033[0m", "\033[32;1m // "+e.Notes+" \033[0m")
|
||||
} else {
|
||||
p.Add(e.Name, "\033[32;1m "+e.Type+" \033[0m", "\033[31;1m "+tag+" \033[0m")
|
||||
}
|
||||
|
||||
return p.Generates()[0]
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// struct
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
@@ -116,6 +143,25 @@ func (s *GenStruct) Generates() []string {
|
||||
return p.Generates()
|
||||
}
|
||||
|
||||
// \033[3%d;%dm -%d;%d-colors!\033[0m\n
|
||||
// GeneratesColor Get the result data on color.获取结果数据 带颜色
|
||||
func (s *GenStruct) GeneratesColor() []string {
|
||||
var p generate.PrintAtom
|
||||
if config.GetIsOutSQL() {
|
||||
p.Add("\033[32;1m /******sql******\033[0m")
|
||||
p.Add(s.SQLBuildStr)
|
||||
p.Add("\033[32;1m ******sql******/ \033[0m")
|
||||
}
|
||||
p.Add("\033[32;1m " + s.Notes + " \033[0m")
|
||||
p.Add("\033[34;1m type \033[0m", s.Name, "\033[34;1m struct \033[0m {")
|
||||
for _, v := range s.Em {
|
||||
p.Add(" \t\t" + v.GenerateColor())
|
||||
}
|
||||
p.Add(" }")
|
||||
|
||||
return p.Generates()
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// package
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
package gtools
|
||||
|
||||
import (
|
||||
"github.com/xxjwxc/gormt/data/view/model"
|
||||
"github.com/xxjwxc/gormt/data/view/model/genmysql"
|
||||
)
|
||||
|
||||
// GetMysqlModel get model interface. 获取model接口
|
||||
func GetMysqlModel() model.IModel {
|
||||
//now just support mysql
|
||||
return &genmysql.MySQLModel
|
||||
}
|
||||
@@ -9,6 +9,7 @@ import (
|
||||
|
||||
"github.com/xxjwxc/gormt/data/config"
|
||||
|
||||
"github.com/xxjwxc/gormt/data/view/model/genmysql"
|
||||
"github.com/xxjwxc/public/tools"
|
||||
)
|
||||
|
||||
@@ -19,7 +20,6 @@ func Execute() {
|
||||
} else {
|
||||
showCmd()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func showCmd() {
|
||||
@@ -27,14 +27,13 @@ func showCmd() {
|
||||
// tt.Nickname = "ticket_001"
|
||||
// orm.Where("nickname = ?", "ticket_001").Find(&tt)
|
||||
// fmt.Println(tt)
|
||||
|
||||
modeldb := GetMysqlModel()
|
||||
modeldb := genmysql.GetMysqlModel()
|
||||
pkg := modeldb.GenModel()
|
||||
// just for test
|
||||
// out, _ := json.Marshal(pkg)
|
||||
// tools.WriteFile("test.txt", []string{string(out)}, true)
|
||||
|
||||
list := model.Generate(pkg)
|
||||
list, _ := model.Generate(pkg)
|
||||
|
||||
for _, v := range list {
|
||||
path := config.GetOutDir() + "/" + v.FileName
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package model
|
||||
|
||||
const (
|
||||
_tagGorm = "gorm"
|
||||
_tagJSON = "json"
|
||||
// _tagGorm = "gorm"
|
||||
// _tagJSON = "json"
|
||||
)
|
||||
|
||||
// ColumusKey Columus type elem. 类型枚举
|
||||
|
||||
@@ -3,13 +3,18 @@ package genmysql
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/xxjwxc/gormt/data/config"
|
||||
|
||||
"github.com/xxjwxc/gormt/data/view/model"
|
||||
)
|
||||
|
||||
// filterModel filter.过滤 gorm.Model
|
||||
func filterModel(list *[]genColumns) bool {
|
||||
var _temp []genColumns
|
||||
if config.GetDBTag() != "gorm" {
|
||||
return false
|
||||
}
|
||||
|
||||
var _temp []genColumns
|
||||
num := 0
|
||||
for _, v := range *list {
|
||||
if strings.EqualFold(v.Field, "id") ||
|
||||
@@ -41,3 +46,9 @@ func fixForeignKey(list []genForeignKey, columuName string, result *[]model.Fore
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// GetMysqlModel get model interface. 获取model接口
|
||||
func GetMysqlModel() model.IModel {
|
||||
//now just support mysql
|
||||
return &MySQLModel
|
||||
}
|
||||
|
||||
@@ -169,7 +169,9 @@ func getTables(orm *mysqldb.MySqlDB) map[string]string {
|
||||
|
||||
rows, err := orm.Raw("show tables").Rows()
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
if !config.GetIsGUI() {
|
||||
fmt.Println(err)
|
||||
}
|
||||
return tbDesc
|
||||
}
|
||||
|
||||
@@ -184,7 +186,9 @@ func getTables(orm *mysqldb.MySqlDB) map[string]string {
|
||||
// Get table annotations.获取表注释
|
||||
rows1, err := orm.Raw("SELECT TABLE_NAME,TABLE_COMMENT FROM information_schema.TABLES WHERE table_schema= '" + config.GetMysqlDbInfo().Database + "'").Rows()
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
if !config.GetIsGUI() {
|
||||
fmt.Println(err)
|
||||
}
|
||||
return tbDesc
|
||||
}
|
||||
|
||||
|
||||
@@ -17,11 +17,12 @@ import (
|
||||
|
||||
type _Model struct {
|
||||
info DBInfo
|
||||
pkg *genstruct.GenPackage
|
||||
}
|
||||
|
||||
// Generate build code string.生成代码
|
||||
func Generate(info DBInfo) (out []GenOutInfo) {
|
||||
m := _Model{
|
||||
func Generate(info DBInfo) (out []GenOutInfo, m _Model) {
|
||||
m = _Model{
|
||||
info: info,
|
||||
}
|
||||
|
||||
@@ -40,23 +41,36 @@ func Generate(info DBInfo) (out []GenOutInfo) {
|
||||
return
|
||||
}
|
||||
|
||||
func (m *_Model) generate() string {
|
||||
var pkg genstruct.GenPackage
|
||||
pkg.SetPackage(m.info.PackageName) //package name
|
||||
for _, tab := range m.info.TabList {
|
||||
var sct genstruct.GenStruct
|
||||
sct.SetStructName(getCamelName(tab.Name)) // Big hump.大驼峰
|
||||
sct.SetNotes(tab.Notes)
|
||||
sct.AddElement(m.genTableElement(tab.Em)...) // build element.构造元素
|
||||
sct.SetCreatTableStr(tab.SQLBuildStr)
|
||||
pkg.AddStruct(sct)
|
||||
// GetPackage gen sturct on table
|
||||
func (m *_Model) GetPackage() genstruct.GenPackage {
|
||||
if m.pkg == nil {
|
||||
var pkg genstruct.GenPackage
|
||||
pkg.SetPackage(m.info.PackageName) //package name
|
||||
for _, tab := range m.info.TabList {
|
||||
var sct genstruct.GenStruct
|
||||
sct.SetStructName(getCamelName(tab.Name)) // Big hump.大驼峰
|
||||
sct.SetNotes(tab.Notes)
|
||||
sct.AddElement(m.genTableElement(tab.Em)...) // build element.构造元素
|
||||
sct.SetCreatTableStr(tab.SQLBuildStr)
|
||||
pkg.AddStruct(sct)
|
||||
}
|
||||
m.pkg = &pkg
|
||||
}
|
||||
|
||||
return pkg.Generate()
|
||||
return *m.pkg
|
||||
}
|
||||
|
||||
func (m *_Model) generate() string {
|
||||
m.pkg = nil
|
||||
m.GetPackage()
|
||||
return m.pkg.Generate()
|
||||
}
|
||||
|
||||
// genTableElement Get table columns and comments.获取表列及注释
|
||||
func (m *_Model) genTableElement(cols []ColumusInfo) (el []genstruct.GenElement) {
|
||||
_tagGorm := config.GetDBTag()
|
||||
_tagJSON := config.GetURLTag()
|
||||
|
||||
for _, v := range cols {
|
||||
var tmp genstruct.GenElement
|
||||
if strings.EqualFold(v.Type, "gorm.Model") { // gorm model
|
||||
@@ -115,6 +129,9 @@ 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) {
|
||||
_tagGorm := config.GetDBTag()
|
||||
_tagJSON := config.GetURLTag()
|
||||
|
||||
for _, v := range col.ForeignKeyList {
|
||||
isMulti, isFind, notes := m.getColumusKeyMulti(v.TableName, v.ColumnName)
|
||||
if isFind {
|
||||
|
||||
Reference in New Issue
Block a user