Merge branch 'master' of https://github.com/LLLLancelot/gormt into LLLLancelot-master

This commit is contained in:
xxjwxc
2020-02-28 22:48:56 +08:00
17 changed files with 167 additions and 116 deletions

View File

@@ -10,8 +10,14 @@ var EImportsHead = map[string]string{
// TypeMysqlDicMp Accurate matching type.精确匹配类型
var TypeMysqlDicMp = map[string]string{
"tinyint": "int8",
"tinyint unsigned": "uint8",
"smallint": "int16",
"smallint unsigned": "uint16",
"int": "int",
"int unsigned": "uint",
"bigint": "int64",
"bigint unsigned": "uint64",
"varchar": "string",
"char": "string",
"date": "time.Time",
@@ -34,7 +40,7 @@ var TypeMysqlDicMp = map[string]string{
// TypeMysqlMatchMp Fuzzy Matching Types.模糊匹配类型
var TypeMysqlMatchMp = map[string]string{
`^(tinyint)[(]\d+[)]`: "int8",
`^(smallint)[(]\d+[)]`: "int8",
`^(smallint)[(]\d+[)]`: "int16",
`^(int)[(]\d+[)]`: "int",
`^(bigint)[(]\d+[)]`: "int64",
`^(char)[(]\d+[)]`: "string",
@@ -45,4 +51,5 @@ var TypeMysqlMatchMp = map[string]string{
`^(mediumint)[(]\d+[)]`: "string",
`^(double)[(]\d+,\d+[)]`: "float64",
`^(float)[(]\d+,\d+[)]`: "float64",
`^(datetime)[(]\d+[)]`: "time.Time",
}

View File

@@ -1,6 +1,12 @@
package genfunc
const (
genTnf = `
// TableName get sql table name.获取数据库表名
func (m *{{.StructName}}) TableName() string {
return "{{.TableName}}"
}
`
genBase = `
package {{.PackageName}}
import (

View File

@@ -1,5 +1,10 @@
package genfunc
// GetGenTableNameTemp get gen base template str
func GetGenTableNameTemp() string {
return genTnf
}
// GetGenBaseTemp get gen base template str
func GetGenBaseTemp() string {
return genBase

View File

@@ -1,13 +1,16 @@
package genstruct
import (
"bytes"
"fmt"
"sort"
"strings"
"text/template"
"github.com/xxjwxc/gormt/data/config"
"github.com/xxjwxc/gormt/data/view/cnf"
"github.com/xxjwxc/gormt/data/view/generate"
"github.com/xxjwxc/gormt/data/view/genfunc"
)
// SetName Setting element name.设置元素名字
@@ -96,6 +99,11 @@ func (s *GenStruct) SetCreatTableStr(sql string) {
s.SQLBuildStr = sql
}
// SetTableName Setting the name of struct.设置struct名字
func (s *GenStruct) SetTableName(name string) {
s.TableName = name
}
// SetStructName Setting the name of struct.设置struct名字
func (s *GenStruct) SetStructName(name string) {
s.Name = name
@@ -125,6 +133,21 @@ func (s *GenStruct) AddElement(e ...GenElement) {
s.Em = append(s.Em, e...)
}
func (s *GenStruct) GenerateTableName() []string {
tmpl, err := template.New("gen_tnf").Parse(genfunc.GetGenTableNameTemp())
if err != nil {
panic(err)
}
var data struct {
TableName string
StructName string
}
data.TableName, data.StructName = s.TableName, s.Name
var buf bytes.Buffer
tmpl.Execute(&buf, data)
return []string{buf.String()}
}
// Generates Get the result data.获取结果数据
func (s *GenStruct) Generates() []string {
var p generate.PrintAtom
@@ -158,12 +181,8 @@ func (s *GenStruct) GeneratesColor() []string {
}
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 {")
mp := make(map[string]bool, len(s.Em))
for _, v := range s.Em {
if !mp[v.Name] {
mp[v.Name] = true
p.Add(" \t\t" + v.GenerateColor())
}
p.Add(" \t\t" + v.GenerateColor())
}
p.Add(" }")
@@ -215,6 +234,16 @@ func (p *GenPackage) Generate() string {
}
// -----------end
// add table name func
if config.GetIsTableName() {
for _, v := range p.Structs {
for _, v1 := range v.GenerateTableName() {
pa.Add(v1)
}
}
}
// -----------end
// add func
for _, v := range p.FuncStrList {
pa.Add(v)

View File

@@ -11,6 +11,7 @@ type GenElement struct {
// GenStruct struct of IStruct .结构体
type GenStruct struct {
SQLBuildStr string // Create SQL statements.创建sql语句
TableName string // table_name.表名
Name string // name.名字
Notes string // notes.注释
Em []GenElement // em.元素组合

View File

@@ -60,6 +60,18 @@ func (m *mysqlModel) GetPkgName() string {
func getPackageInfo(orm *mysqldb.MySqlDB, info *model.DBInfo) {
tabls := getTables(orm) // get table and notes
if m := config.GetTableList(); len(m) > 0 {
// 制定了表之后
newTabls := make(map[string]string)
for t := range m {
if notes, ok := tabls[t]; ok {
newTabls[t] = notes
} else {
fmt.Printf("table: %s not found in db\n", t)
}
}
tabls = newTabls
}
for tabName, notes := range tabls {
var tab model.TabInfo
tab.Name = tabName

View File

@@ -29,7 +29,11 @@ func Generate(info DBInfo) (out []GenOutInfo, m _Model) {
// struct
var stt GenOutInfo
stt.FileCtx = m.generate()
stt.FileName = info.DbName + ".go"
if fn := config.GetOutFileName(); fn != "" {
stt.FileName = fn
} else {
stt.FileName = info.DbName + ".go"
}
out = append(out, stt)
// ------end
@@ -48,6 +52,7 @@ func (m *_Model) GetPackage() genstruct.GenPackage {
pkg.SetPackage(m.info.PackageName) //package name
for _, tab := range m.info.TabList {
var sct genstruct.GenStruct
sct.SetTableName(tab.Name)
sct.SetStructName(getCamelName(tab.Name)) // Big hump.大驼峰
sct.SetNotes(tab.Notes)
sct.AddElement(m.genTableElement(tab.Em)...) // build element.构造元素