添加ui界面
This commit is contained in:
@@ -60,6 +60,10 @@ func SetOutDir(outDir string) {
|
|||||||
|
|
||||||
// GetOutDir Get Output Directory.获取输出目录
|
// GetOutDir Get Output Directory.获取输出目录
|
||||||
func GetOutDir() string {
|
func GetOutDir() string {
|
||||||
|
if len(_map.OutDir) == 0 {
|
||||||
|
_map.OutDir = "./model"
|
||||||
|
}
|
||||||
|
|
||||||
return _map.OutDir
|
return _map.OutDir
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,16 @@
|
|||||||
package dlg
|
package dlg
|
||||||
|
|
||||||
import "github.com/jroimartin/gocui"
|
import (
|
||||||
|
"os/exec"
|
||||||
|
|
||||||
|
"github.com/jroimartin/gocui"
|
||||||
|
"github.com/xxjwxc/gormt/data/view/model"
|
||||||
|
"github.com/xxjwxc/gormt/data/view/model/genmysql"
|
||||||
|
|
||||||
|
"github.com/xxjwxc/gormt/data/config"
|
||||||
|
|
||||||
|
"github.com/xxjwxc/public/tools"
|
||||||
|
)
|
||||||
|
|
||||||
func division(a int, b float32) int {
|
func division(a int, b float32) int {
|
||||||
r := float32(a) / b
|
r := float32(a) / b
|
||||||
@@ -60,3 +70,29 @@ func getBool(bstr string) bool {
|
|||||||
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func generate(g *gocui.Gui, v *gocui.View) {
|
||||||
|
modeldb := genmysql.GetMysqlModel()
|
||||||
|
pkg := modeldb.GenModel()
|
||||||
|
// just for test
|
||||||
|
// out, _ := json.Marshal(pkg)
|
||||||
|
// tools.WriteFile("test.txt", []string{string(out)}, true)
|
||||||
|
|
||||||
|
list, mo := model.Generate(pkg)
|
||||||
|
|
||||||
|
addlog(g, "\n \033[32;7m 开 始 : begin \033[0m\n")
|
||||||
|
|
||||||
|
for _, v := range list {
|
||||||
|
path := config.GetOutDir() + "/" + v.FileName
|
||||||
|
tools.WriteFile(path, []string{v.FileCtx}, true)
|
||||||
|
|
||||||
|
addlog(g, " formatting differs from goimport's:")
|
||||||
|
cmd, _ := exec.Command("goimports", "-l", "-w", path).Output()
|
||||||
|
addlog(g, " "+string(cmd))
|
||||||
|
}
|
||||||
|
|
||||||
|
addlog(g, "\033[32;7m 所 有 已 完 成 : ALL completed!! \033[0m\n")
|
||||||
|
// build item
|
||||||
|
gPkg = mo.GetPackage()
|
||||||
|
buildList(g, v)
|
||||||
|
}
|
||||||
|
|||||||
141
data/dlg/cui.go
141
data/dlg/cui.go
@@ -17,10 +17,6 @@ func nextView(g *gocui.Gui, v *gocui.View) error {
|
|||||||
nextIndex := (mainIndex + 1) % len(mainViewArr)
|
nextIndex := (mainIndex + 1) % len(mainViewArr)
|
||||||
name := mainViewArr[nextIndex]
|
name := mainViewArr[nextIndex]
|
||||||
|
|
||||||
err := setlog(g, "Going from view "+v.Name()+" to "+name)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if _, err := g.SetCurrentView(name); err != nil { // 设置选中
|
if _, err := g.SetCurrentView(name); err != nil { // 设置选中
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -29,14 +25,14 @@ func nextView(g *gocui.Gui, v *gocui.View) error {
|
|||||||
|
|
||||||
switch name {
|
switch name {
|
||||||
case _menuDefine:
|
case _menuDefine:
|
||||||
g.Cursor = false // 光标
|
//g.Cursor = false // 光标
|
||||||
// g.FgColor = gocui.ColorGreen
|
// g.FgColor = gocui.ColorGreen
|
||||||
menuDlg.btnList[menuDlg.active].Focus()
|
menuDlg.btnList[menuDlg.active].Focus()
|
||||||
case _listDefine:
|
case _listDefine:
|
||||||
g.Cursor = false
|
//g.Cursor = false
|
||||||
menuDlg.btnList[menuDlg.active].UnFocus()
|
menuDlg.btnList[menuDlg.active].UnFocus()
|
||||||
case _viewDefine:
|
case _viewDefine:
|
||||||
g.Cursor = true
|
//g.Cursor = true
|
||||||
menuDlg.btnList[menuDlg.active].UnFocus()
|
menuDlg.btnList[menuDlg.active].UnFocus()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,11 +67,14 @@ func mainLayout(g *gocui.Gui) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
v.Title = SLocalize(_listDefine)
|
v.Title = SLocalize(_listDefine)
|
||||||
v.Wrap = true
|
// v.Wrap = true
|
||||||
v.Autoscroll = true
|
// v.Autoscroll = true
|
||||||
if _, err := g.SetCurrentView(_menuDefine); err != nil {
|
v.Highlight = true
|
||||||
return err
|
v.SelBgColor = gocui.ColorGreen
|
||||||
}
|
v.SelFgColor = gocui.ColorBlack
|
||||||
|
// if _, err := g.SetCurrentView(_menuDefine); err != nil {
|
||||||
|
// return err
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
if v, err := g.SetView(_viewDefine, division(maxX, uiPart[0]), 1, maxX-1, maxY-1); err != nil {
|
if v, err := g.SetView(_viewDefine, division(maxX, uiPart[0]), 1, maxX-1, maxY-1); err != nil {
|
||||||
@@ -115,15 +114,28 @@ func keybindings(g *gocui.Gui) {
|
|||||||
if err := g.SetKeybinding("", gocui.KeyTab, gocui.ModNone, nextView); err != nil { // tab next事件
|
if err := g.SetKeybinding("", gocui.KeyTab, gocui.ModNone, nextView); err != nil { // tab next事件
|
||||||
log.Panicln(err)
|
log.Panicln(err)
|
||||||
}
|
}
|
||||||
|
if err := g.SetKeybinding("", gocui.KeyEsc, gocui.ModNone, buttonCancel); err != nil {
|
||||||
|
log.Panicln(err)
|
||||||
|
}
|
||||||
|
if err := g.SetKeybinding("", gocui.KeyCtrlQ, gocui.ModNone, buttonCancel); err != nil {
|
||||||
|
log.Panicln(err)
|
||||||
|
}
|
||||||
if err := g.SetKeybinding("main_title", gocui.MouseLeft, gocui.ModNone, about); err != nil {
|
if err := g.SetKeybinding("main_title", gocui.MouseLeft, gocui.ModNone, about); err != nil {
|
||||||
log.Panicln(err)
|
log.Panicln(err)
|
||||||
}
|
}
|
||||||
// if err := g.SetKeybinding(_run, gocui.MouseLeft, gocui.ModNone, about); err != nil {
|
if err := g.SetKeybinding(_listDefine, gocui.KeyArrowDown, gocui.ModNone, listDown); err != nil {
|
||||||
// log.Panicln(err)
|
log.Panicln(err)
|
||||||
// }
|
}
|
||||||
// if err := g.SetKeybinding(_set, gocui.MouseLeft, gocui.ModNone, about); err != nil {
|
if err := g.SetKeybinding(_listDefine, gocui.KeyArrowUp, gocui.ModNone, listUp); err != nil {
|
||||||
// log.Panicln(err)
|
log.Panicln(err)
|
||||||
// }
|
}
|
||||||
|
if err := g.SetKeybinding(_listDefine, gocui.KeyEnter, gocui.ModNone, showStruct); err != nil {
|
||||||
|
log.Panicln(err)
|
||||||
|
}
|
||||||
|
if err := g.SetKeybinding(_listDefine, gocui.MouseLeft, gocui.ModNone, showStruct); err != nil {
|
||||||
|
log.Panicln(err)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////signal slot ///////////
|
///////////////////signal slot ///////////
|
||||||
@@ -142,8 +154,18 @@ func setlog(g *gocui.Gui, str string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func addlog(g *gocui.Gui, str string) error {
|
||||||
|
logView, err := g.View(_viewDefine)
|
||||||
|
if err == nil {
|
||||||
|
fmt.Fprintln(logView, str)
|
||||||
|
}
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func enterRun(g *gocui.Gui, v *gocui.View) error {
|
func enterRun(g *gocui.Gui, v *gocui.View) error {
|
||||||
setlog(g, "run .... ing")
|
setlog(g, "run .... ing")
|
||||||
|
generate(g, v)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -181,6 +203,8 @@ func enterSet(g *gocui.Gui, v *gocui.View) error {
|
|||||||
AddOptions(SLocalize("true"), SLocalize("false")).SetSelected(SLocalize(tools.AsString(config.GetIsOutFunc())))
|
AddOptions(SLocalize("true"), SLocalize("false")).SetSelected(SLocalize(tools.AsString(config.GetIsOutFunc())))
|
||||||
form.AddSelect("is_foreign_key", SLocalize("is_foreign_key"), formPart[0], formPart[2]).
|
form.AddSelect("is_foreign_key", SLocalize("is_foreign_key"), formPart[0], formPart[2]).
|
||||||
AddOptions(SLocalize("true"), SLocalize("false")).SetSelected(SLocalize(tools.AsString(config.GetIsForeignKey())))
|
AddOptions(SLocalize("true"), SLocalize("false")).SetSelected(SLocalize(tools.AsString(config.GetIsForeignKey())))
|
||||||
|
form.AddSelect("is_gui", SLocalize("is_gui"), formPart[0], formPart[2]).
|
||||||
|
AddOptions(SLocalize("true"), SLocalize("false")).SetSelected(SLocalize(tools.AsString(config.GetIsGUI())))
|
||||||
form.AddSelect("url_tag", SLocalize("url_tag"), formPart[0], formPart[2]).
|
form.AddSelect("url_tag", SLocalize("url_tag"), formPart[0], formPart[2]).
|
||||||
AddOptions("json", "url").SetSelected(tools.AsString(config.GetURLTag()))
|
AddOptions("json", "url").SetSelected(tools.AsString(config.GetURLTag()))
|
||||||
form.AddSelect("db_tag", SLocalize("db_tag"), formPart[0], formPart[2]).
|
form.AddSelect("db_tag", SLocalize("db_tag"), formPart[0], formPart[2]).
|
||||||
@@ -209,7 +233,7 @@ func buttonCancel(g *gocui.Gui, v *gocui.View) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func buttonSave(g *gocui.Gui, v *gocui.View) error {
|
func buttonSave(g *gocui.Gui, v *gocui.View) error {
|
||||||
|
maxX, _ := g.Size()
|
||||||
mp := form.GetFieldTexts()
|
mp := form.GetFieldTexts()
|
||||||
config.SetOutDir(mp["out_dir"])
|
config.SetOutDir(mp["out_dir"])
|
||||||
|
|
||||||
@@ -217,7 +241,8 @@ func buttonSave(g *gocui.Gui, v *gocui.View) error {
|
|||||||
dbInfo.Host = mp["db_host"]
|
dbInfo.Host = mp["db_host"]
|
||||||
port, err := strconv.Atoi(mp["db_port"])
|
port, err := strconv.Atoi(mp["db_port"])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
modal := mycui.NewModal(g, 0, 0, 30).SetText("port error")
|
modal := mycui.NewModal(g, division(maxX, uiPart[0])+5, 10, division(maxX, uiPart[0])+35).SetTextColor(gocui.ColorRed).SetText("port error")
|
||||||
|
// modal.SetBgColor(gocui.ColorRed)
|
||||||
modal.AddButton("ok", "OK", gocui.KeyEnter, func(g *gocui.Gui, v *gocui.View) error {
|
modal.AddButton("ok", "OK", gocui.KeyEnter, func(g *gocui.Gui, v *gocui.View) error {
|
||||||
modal.Close()
|
modal.Close()
|
||||||
form.SetCurrentItem(form.GetCurrentItem())
|
form.SetCurrentItem(form.GetCurrentItem())
|
||||||
@@ -241,12 +266,86 @@ func buttonSave(g *gocui.Gui, v *gocui.View) error {
|
|||||||
config.SetIsOutSQL(getBool(mp["is_out_sql"]))
|
config.SetIsOutSQL(getBool(mp["is_out_sql"]))
|
||||||
config.SetIsOutFunc(getBool(mp["is_out_func"]))
|
config.SetIsOutFunc(getBool(mp["is_out_func"]))
|
||||||
config.SetForeignKey(getBool(mp["is_foreign_key"]))
|
config.SetForeignKey(getBool(mp["is_foreign_key"]))
|
||||||
|
config.SetIsGUI(getBool(mp["is_gui"]))
|
||||||
config.SetURLTag(mp["url_tag"])
|
config.SetURLTag(mp["url_tag"])
|
||||||
config.SetDBTag(mp["db_tag"])
|
config.SetDBTag(mp["db_tag"])
|
||||||
config.SetLG(mp["language"])
|
config.SetLG(mp["language"])
|
||||||
|
|
||||||
config.SaveToFile()
|
config.SaveToFile()
|
||||||
buttonCancel(g, v)
|
modal := mycui.NewModal(g, division(maxX, uiPart[0])+5, 10, division(maxX, uiPart[0])+35).SetText("save success")
|
||||||
|
modal.AddButton("ok", "OK", gocui.KeyEnter, func(g *gocui.Gui, v *gocui.View) error {
|
||||||
|
modal.Close()
|
||||||
|
buttonCancel(g, v)
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
modal.Draw()
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func buildList(g *gocui.Gui, v *gocui.View) error {
|
||||||
|
listView, err := g.View(_listDefine)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
listView.Clear()
|
||||||
|
for _, info := range gPkg.Structs {
|
||||||
|
fmt.Fprintln(listView, info.Name)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func showStruct(g *gocui.Gui, v *gocui.View) error {
|
||||||
|
var l string
|
||||||
|
var err error
|
||||||
|
|
||||||
|
_, cy := v.Cursor()
|
||||||
|
if l, err = v.Line(cy); err != nil {
|
||||||
|
l = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
var out []string
|
||||||
|
for _, v := range gPkg.Structs {
|
||||||
|
if v.Name == l {
|
||||||
|
out = v.GeneratesColor()
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setlog(g, "")
|
||||||
|
for _, v := range out {
|
||||||
|
addlog(g, v)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func listDown(g *gocui.Gui, v *gocui.View) error {
|
||||||
|
if v != nil {
|
||||||
|
cx, cy := v.Cursor()
|
||||||
|
if cy < len(gPkg.Structs)-1 {
|
||||||
|
if err := v.SetCursor(cx, cy+1); err != nil {
|
||||||
|
ox, oy := v.Origin()
|
||||||
|
if err := v.SetOrigin(ox, oy+1); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func listUp(g *gocui.Gui, v *gocui.View) error {
|
||||||
|
if v != nil {
|
||||||
|
ox, oy := v.Origin()
|
||||||
|
cx, cy := v.Cursor()
|
||||||
|
if err := v.SetCursor(cx, cy-1); err != nil && oy > 0 {
|
||||||
|
if err := v.SetOrigin(ox, oy-1); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package dlg
|
package dlg
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"github.com/xxjwxc/gormt/data/view/genstruct"
|
||||||
"github.com/xxjwxc/public/mycui"
|
"github.com/xxjwxc/public/mycui"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -27,5 +28,11 @@ type menuDetails struct {
|
|||||||
btnList []*mycui.Button
|
btnList []*mycui.Button
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type listDetails struct {
|
||||||
|
active int
|
||||||
|
btnList []*mycui.Button
|
||||||
|
}
|
||||||
|
|
||||||
var menuDlg *menuDetails
|
var menuDlg *menuDetails
|
||||||
var form *mycui.Form
|
var form *mycui.Form
|
||||||
|
var gPkg genstruct.GenPackage
|
||||||
|
|||||||
@@ -19,9 +19,6 @@ func init() {
|
|||||||
|
|
||||||
func getLG() string {
|
func getLG() string {
|
||||||
tag := config.GetLG()
|
tag := config.GetLG()
|
||||||
// if len(tag) == 0 {
|
|
||||||
// return tools.GetLocalSystemLang(true)
|
|
||||||
// }
|
|
||||||
if tag == "English" {
|
if tag == "English" {
|
||||||
return "en"
|
return "en"
|
||||||
}
|
}
|
||||||
@@ -86,6 +83,9 @@ func addChinese() error {
|
|||||||
}, &i18n.Message{
|
}, &i18n.Message{
|
||||||
ID: "is_foreign_key",
|
ID: "is_foreign_key",
|
||||||
Other: " 导 出 外 键 :",
|
Other: " 导 出 外 键 :",
|
||||||
|
}, &i18n.Message{
|
||||||
|
ID: "is_gui",
|
||||||
|
Other: " 界 面 模 式 :",
|
||||||
}, &i18n.Message{
|
}, &i18n.Message{
|
||||||
ID: "url_tag",
|
ID: "url_tag",
|
||||||
Other: " web 标 签:",
|
Other: " web 标 签:",
|
||||||
@@ -112,10 +112,10 @@ func addChinese() error {
|
|||||||
Other: " 关 于 作 者",
|
Other: " 关 于 作 者",
|
||||||
}, &i18n.Message{
|
}, &i18n.Message{
|
||||||
ID: "log_run",
|
ID: "log_run",
|
||||||
Other: " Enter : 执 行 \n ↑ ↓: 本 视 图 选 择 \n Tab : 多 视 图 切 换 \n 支 持 鼠 标 操 作 方 式 \n \n \033[33;7m 输 入 Enter 直 接 执 行 \033[0m\n ",
|
Other: " Enter : 执 行 \n ↑ ↓: 本 视 图 选 择 \n Tab : 多 视 图 切 换 \n Ctrl+C : 退 出 应 用 \n Ctrl+Q : 退 出 对 话 框 \n 支 持 鼠 标 操 作 方 式 \n \n \033[33;7m 输 入 Enter 直 接 执 行 \033[0m\n ",
|
||||||
}, &i18n.Message{
|
}, &i18n.Message{
|
||||||
ID: "log_set",
|
ID: "log_set",
|
||||||
Other: " Enter : 执 行 \n ↑ ↓: 本 视 图 选 择 \n Tab : 多 视 图 切 换 \n 支 持 鼠 标 操 作 方 式 \n \n \033[33;7m 输 入 Enter 打 开 设 置 窗 口 \033[0m\n ",
|
Other: " Enter : 执 行 \n ↑ ↓: 本 视 图 选 择 \n Tab : 多 视 图 切 换\n Ctrl+C : 退 出 应 用 \n Ctrl+Q : 退 出 对 话 框 \n 支 持 鼠 标 操 作 方 式 \n \n \033[33;7m 输 入 Enter 打 开 设 置 窗 口 \033[0m\n ",
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -171,6 +171,9 @@ func addEnglish() error {
|
|||||||
}, &i18n.Message{
|
}, &i18n.Message{
|
||||||
ID: "is_foreign_key",
|
ID: "is_foreign_key",
|
||||||
Other: "is foreign key:",
|
Other: "is foreign key:",
|
||||||
|
}, &i18n.Message{
|
||||||
|
ID: "is_gui",
|
||||||
|
Other: "is show gui:",
|
||||||
}, &i18n.Message{
|
}, &i18n.Message{
|
||||||
ID: "url_tag",
|
ID: "url_tag",
|
||||||
Other: "url tag:",
|
Other: "url tag:",
|
||||||
@@ -197,9 +200,9 @@ func addEnglish() error {
|
|||||||
Other: "About",
|
Other: "About",
|
||||||
}, &i18n.Message{
|
}, &i18n.Message{
|
||||||
ID: "log_run",
|
ID: "log_run",
|
||||||
Other: " Enter : run \n ↑ ↓: Selection of this view \n Tab : Multi view switching \n Mouse operation supported \n \n \033[33;7m Enter to execute \033[0m",
|
Other: " Enter : run \n ↑ ↓: Selection of this view \n Tab : Multi view switching \n Ctrl+C : quit; \n Ctrl+Q : backup \n Mouse operation supported \n \n \033[33;7m Enter to execute \033[0m",
|
||||||
}, &i18n.Message{
|
}, &i18n.Message{
|
||||||
ID: "log_set",
|
ID: "log_set",
|
||||||
Other: " Enter : run \n ↑ ↓: Selection of this view \n Tab : Multi view switching \n Mouse operation supported \n \n \033[33;7m Enter enter to open the settings window \033[0m",
|
Other: " Enter : run \n ↑ ↓: Selection of this view \n Tab : Multi view switching \n Ctrl+C : quit \n Ctrl+Q : backup \n Mouse operation supported \n \n \033[33;7m Enter enter to open the settings window \033[0m",
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,6 +60,33 @@ func (e *GenElement) Generate() string {
|
|||||||
return p.Generates()[0]
|
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
|
// struct
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
@@ -116,6 +143,25 @@ func (s *GenStruct) Generates() []string {
|
|||||||
return p.Generates()
|
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
|
// 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/config"
|
||||||
|
|
||||||
|
"github.com/xxjwxc/gormt/data/view/model/genmysql"
|
||||||
"github.com/xxjwxc/public/tools"
|
"github.com/xxjwxc/public/tools"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -19,7 +20,6 @@ func Execute() {
|
|||||||
} else {
|
} else {
|
||||||
showCmd()
|
showCmd()
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func showCmd() {
|
func showCmd() {
|
||||||
@@ -27,14 +27,13 @@ func showCmd() {
|
|||||||
// tt.Nickname = "ticket_001"
|
// tt.Nickname = "ticket_001"
|
||||||
// orm.Where("nickname = ?", "ticket_001").Find(&tt)
|
// orm.Where("nickname = ?", "ticket_001").Find(&tt)
|
||||||
// fmt.Println(tt)
|
// fmt.Println(tt)
|
||||||
|
modeldb := genmysql.GetMysqlModel()
|
||||||
modeldb := GetMysqlModel()
|
|
||||||
pkg := modeldb.GenModel()
|
pkg := modeldb.GenModel()
|
||||||
// just for test
|
// just for test
|
||||||
// out, _ := json.Marshal(pkg)
|
// out, _ := json.Marshal(pkg)
|
||||||
// tools.WriteFile("test.txt", []string{string(out)}, true)
|
// tools.WriteFile("test.txt", []string{string(out)}, true)
|
||||||
|
|
||||||
list := model.Generate(pkg)
|
list, _ := model.Generate(pkg)
|
||||||
|
|
||||||
for _, v := range list {
|
for _, v := range list {
|
||||||
path := config.GetOutDir() + "/" + v.FileName
|
path := config.GetOutDir() + "/" + v.FileName
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package model
|
package model
|
||||||
|
|
||||||
const (
|
const (
|
||||||
_tagGorm = "gorm"
|
// _tagGorm = "gorm"
|
||||||
_tagJSON = "json"
|
// _tagJSON = "json"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ColumusKey Columus type elem. 类型枚举
|
// ColumusKey Columus type elem. 类型枚举
|
||||||
|
|||||||
@@ -3,13 +3,18 @@ package genmysql
|
|||||||
import (
|
import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/xxjwxc/gormt/data/config"
|
||||||
|
|
||||||
"github.com/xxjwxc/gormt/data/view/model"
|
"github.com/xxjwxc/gormt/data/view/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
// filterModel filter.过滤 gorm.Model
|
// filterModel filter.过滤 gorm.Model
|
||||||
func filterModel(list *[]genColumns) bool {
|
func filterModel(list *[]genColumns) bool {
|
||||||
var _temp []genColumns
|
if config.GetDBTag() != "gorm" {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
var _temp []genColumns
|
||||||
num := 0
|
num := 0
|
||||||
for _, v := range *list {
|
for _, v := range *list {
|
||||||
if strings.EqualFold(v.Field, "id") ||
|
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()
|
rows, err := orm.Raw("show tables").Rows()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
if !config.GetIsGUI() {
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
return tbDesc
|
return tbDesc
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -184,7 +186,9 @@ func getTables(orm *mysqldb.MySqlDB) map[string]string {
|
|||||||
// Get table annotations.获取表注释
|
// Get table annotations.获取表注释
|
||||||
rows1, err := orm.Raw("SELECT TABLE_NAME,TABLE_COMMENT FROM information_schema.TABLES WHERE table_schema= '" + config.GetMysqlDbInfo().Database + "'").Rows()
|
rows1, err := orm.Raw("SELECT TABLE_NAME,TABLE_COMMENT FROM information_schema.TABLES WHERE table_schema= '" + config.GetMysqlDbInfo().Database + "'").Rows()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
if !config.GetIsGUI() {
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
return tbDesc
|
return tbDesc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,11 +17,12 @@ import (
|
|||||||
|
|
||||||
type _Model struct {
|
type _Model struct {
|
||||||
info DBInfo
|
info DBInfo
|
||||||
|
pkg *genstruct.GenPackage
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generate build code string.生成代码
|
// Generate build code string.生成代码
|
||||||
func Generate(info DBInfo) (out []GenOutInfo) {
|
func Generate(info DBInfo) (out []GenOutInfo, m _Model) {
|
||||||
m := _Model{
|
m = _Model{
|
||||||
info: info,
|
info: info,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -40,23 +41,36 @@ func Generate(info DBInfo) (out []GenOutInfo) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *_Model) generate() string {
|
// GetPackage gen sturct on table
|
||||||
var pkg genstruct.GenPackage
|
func (m *_Model) GetPackage() genstruct.GenPackage {
|
||||||
pkg.SetPackage(m.info.PackageName) //package name
|
if m.pkg == nil {
|
||||||
for _, tab := range m.info.TabList {
|
var pkg genstruct.GenPackage
|
||||||
var sct genstruct.GenStruct
|
pkg.SetPackage(m.info.PackageName) //package name
|
||||||
sct.SetStructName(getCamelName(tab.Name)) // Big hump.大驼峰
|
for _, tab := range m.info.TabList {
|
||||||
sct.SetNotes(tab.Notes)
|
var sct genstruct.GenStruct
|
||||||
sct.AddElement(m.genTableElement(tab.Em)...) // build element.构造元素
|
sct.SetStructName(getCamelName(tab.Name)) // Big hump.大驼峰
|
||||||
sct.SetCreatTableStr(tab.SQLBuildStr)
|
sct.SetNotes(tab.Notes)
|
||||||
pkg.AddStruct(sct)
|
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.获取表列及注释
|
// genTableElement Get table columns and comments.获取表列及注释
|
||||||
func (m *_Model) genTableElement(cols []ColumusInfo) (el []genstruct.GenElement) {
|
func (m *_Model) genTableElement(cols []ColumusInfo) (el []genstruct.GenElement) {
|
||||||
|
_tagGorm := config.GetDBTag()
|
||||||
|
_tagJSON := config.GetURLTag()
|
||||||
|
|
||||||
for _, v := range cols {
|
for _, v := range cols {
|
||||||
var tmp genstruct.GenElement
|
var tmp genstruct.GenElement
|
||||||
if strings.EqualFold(v.Type, "gorm.Model") { // gorm model
|
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.获取表列外键相关信息
|
// genForeignKey Get information about foreign key of table column.获取表列外键相关信息
|
||||||
func (m *_Model) genForeignKey(col ColumusInfo) (fklist []genstruct.GenElement) {
|
func (m *_Model) genForeignKey(col ColumusInfo) (fklist []genstruct.GenElement) {
|
||||||
|
_tagGorm := config.GetDBTag()
|
||||||
|
_tagJSON := config.GetURLTag()
|
||||||
|
|
||||||
for _, v := range col.ForeignKeyList {
|
for _, v := range col.ForeignKeyList {
|
||||||
isMulti, isFind, notes := m.getColumusKeyMulti(v.TableName, v.ColumnName)
|
isMulti, isFind, notes := m.getColumusKeyMulti(v.TableName, v.ColumnName)
|
||||||
if isFind {
|
if isFind {
|
||||||
|
|||||||
Reference in New Issue
Block a user