This commit is contained in:
谢小军
2019-08-03 01:34:08 +08:00
parent 3e41ef9304
commit d467d817cf
9 changed files with 73 additions and 73 deletions

View File

@@ -15,7 +15,7 @@ import (
var mysqlInfo config.MysqlDbInfo
var outDir string
var singular_table bool
var singularTable bool
var rootCmd = &cobra.Command{
Use: "main",
@@ -52,7 +52,7 @@ func init() {
rootCmd.PersistentFlags().StringVarP(&outDir, "outdir", "o", "", "输出目录")
rootCmd.MarkFlagRequired("outdir")
rootCmd.PersistentFlags().BoolVarP(&singular_table, "singular", "s", false, "是否禁用表名复数")
rootCmd.PersistentFlags().BoolVarP(&singularTable, "singular", "s", false, "是否禁用表名复数")
rootCmd.MarkFlagRequired("singular")
rootCmd.Flags().IntVar(&mysqlInfo.Port, "port", 3306, "端口号")
@@ -73,7 +73,7 @@ func initConfig() {
}
}
//合并
//MergeMysqlDbInfo 合并
func MergeMysqlDbInfo() {
var tmp = config.GetMysqlDbInfo()
if len(mysqlInfo.Database) > 0 {
@@ -98,7 +98,7 @@ func MergeMysqlDbInfo() {
config.SetOutDir(outDir)
}
if singular_table {
config.SetSingularTable(singular_table)
if singularTable {
config.SetSingularTable(singularTable)
}
}

View File

@@ -2,17 +2,17 @@ package config
import "fmt"
//
//Config .
type Config struct {
CfgBase
MySQLInfo MysqlDbInfo `toml:"mysql_info"`
OutDir string `toml:"out_dir"`
Simple bool `toml:"simple"`
IsJsonTag bool `toml:"isJsonTag"`
IsJSONTag bool `toml:"isJsonTag"`
SingularTable bool `toml:"singular_table"`
}
//mysql 数据库信息
//MysqlDbInfo mysql 数据库信息
type MysqlDbInfo struct {
Host string `validate:"required"` //地址
Port int `validate:"required"` //端口号
@@ -21,17 +21,17 @@ type MysqlDbInfo struct {
Database string `validate:"required"` //数据库名
}
//更新mysql配置信息
//SetMysqlDbInfo 更新mysql配置信息
func SetMysqlDbInfo(info *MysqlDbInfo) {
_map.MySQLInfo = *info
}
//获取mysql配置信息
//GetMysqlDbInfo 获取mysql配置信息
func GetMysqlDbInfo() MysqlDbInfo {
return _map.MySQLInfo
}
//获取mysql 连接字符串
//GetMysqlConStr 获取mysql 连接字符串
func GetMysqlConStr() string {
return fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8&parseTime=True&loc=Local",
_map.MySQLInfo.Username,
@@ -42,32 +42,32 @@ func GetMysqlConStr() string {
)
}
//设置输出目录
//SetOutDir 设置输出目录
func SetOutDir(outDir string) {
_map.OutDir = outDir
}
//获取输出目录
//GetOutDir 获取输出目录
func GetOutDir() string {
return _map.OutDir
}
//设置禁用表名复数
//SetSingularTable 设置禁用表名复数
func SetSingularTable(b bool) {
_map.SingularTable = b
}
//获取禁用表名复数
//GetSingularTable 获取禁用表名复数
func GetSingularTable() bool {
return _map.SingularTable
}
//简单输出
//GetSimple 简单输出
func GetSimple() bool {
return _map.Simple
}
//json标记
func GetIsJsonTag() bool {
return _map.IsJsonTag
//GetIsJSONTag json标记
func GetIsJSONTag() bool {
return _map.IsJSONTag
}

View File

@@ -9,7 +9,7 @@ import (
"github.com/BurntSushi/toml"
)
//
//CfgBase .
type CfgBase struct {
SerialNumber string `json:"serial_number" toml:"serial_number"` //版本号
ServiceName string `json:"service_name" toml:"service_name"` //service名字
@@ -44,7 +44,7 @@ func InitFile(filename string) error {
return nil
}
//获取service配置信息
//GetServiceConfig 获取service配置信息
func GetServiceConfig() (name, displayName, desc string) {
name = _map.ServiceName
displayName = _map.ServiceDisplayname

View File

@@ -6,11 +6,11 @@ import (
)
const (
test_file = `
testFile = `
`
)
//判断是否在测试环境下使用
//IsRunTesting 判断是否在测试环境下使用
func IsRunTesting() bool {
if len(os.Args) > 1 {
return strings.HasPrefix(os.Args[1], "-test")

View File

@@ -12,7 +12,7 @@ import (
"github.com/xxjwxc/public/mysqldb"
)
//获取表列及注释
//OnGetTables 获取表列及注释
func OnGetTables(orm *mysqldb.MySqlDB) map[string]string {
tbDesc := make(map[string]string)
@@ -49,7 +49,7 @@ func OnGetTables(orm *mysqldb.MySqlDB) map[string]string {
return tbDesc
}
//获取包信息
//OnGetPackageInfo 获取包信息
func OnGetPackageInfo(orm *mysqldb.MySqlDB, tabls map[string]string) generate.GenPackage {
var pkg generate.GenPackage
for tab, desc := range tabls {
@@ -78,7 +78,7 @@ func OnGetPackageInfo(orm *mysqldb.MySqlDB, tabls map[string]string) generate.Ge
return pkg
}
// 获取表列及注释
//OnGetTableElement 获取表列及注释
func OnGetTableElement(orm *mysqldb.MySqlDB, tab string) []generate.GenElement {
var el []generate.GenElement
@@ -120,9 +120,9 @@ func OnGetTableElement(orm *mysqldb.MySqlDB, tab string) []generate.GenElement {
tmp.SetType(OnGetTypeName(v.Type))
if strings.EqualFold(v.Key, "PRI") { //设置主键
tmp.AddTag(_tag_gorm, "primary_key")
tmp.AddTag(_tagGorm, "primary_key")
} else if strings.EqualFold(v.Key, "UNI") { //unique
tmp.AddTag(_tag_gorm, "unique")
tmp.AddTag(_tagGorm, "unique")
} else {
//index
for _, v1 := range Keys {
@@ -137,26 +137,26 @@ func OnGetTableElement(orm *mysqldb.MySqlDB, tab string) []generate.GenElement {
_val += ":" + v1.KeyName
}
tmp.AddTag(_tag_gorm, _val)
tmp.AddTag(_tagGorm, _val)
}
}
}
//simple output
if !config.GetSimple() {
tmp.AddTag(_tag_gorm, "column:"+v.Field)
tmp.AddTag(_tag_gorm, "type:"+v.Type)
tmp.AddTag(_tagGorm, "column:"+v.Field)
tmp.AddTag(_tagGorm, "type:"+v.Type)
if strings.EqualFold(v.Null, "NO") {
tmp.AddTag(_tag_gorm, "not null")
tmp.AddTag(_tagGorm, "not null")
}
}
//json tag
if config.GetIsJsonTag() {
if config.GetIsJSONTag() {
if strings.EqualFold(v.Field, "id") {
tmp.AddTag(_tag_json, "-")
tmp.AddTag(_tagJSON, "-")
} else {
tmp.AddTag(_tag_json, v.Field)
tmp.AddTag(_tagJSON, v.Field)
}
}
@@ -166,7 +166,7 @@ func OnGetTableElement(orm *mysqldb.MySqlDB, tab string) []generate.GenElement {
return el
}
//过滤 gorm.Model
//OnHaveModel 过滤 gorm.Model
func OnHaveModel(list *[]struct {
Field string `gorm:"column:Field"`
Type string `gorm:"column:Type"`
@@ -202,7 +202,7 @@ func OnHaveModel(list *[]struct {
return false
}
//类型获取过滤
//OnGetTypeName 类型获取过滤
func OnGetTypeName(name string) string {
//先精确匹配
if v, ok := TypeDicMp[name]; ok {
@@ -219,7 +219,7 @@ func OnGetTypeName(name string) string {
panic(fmt.Sprintf("type (%v) not match in any way.", name))
}
//大驼峰或者首字母大写
//OnGetCamelName 大驼峰或者首字母大写
func OnGetCamelName(name string) string {
if config.GetSingularTable() { //如果全局禁用表名复数
return TitleCase(name)
@@ -228,9 +228,7 @@ func OnGetCamelName(name string) string {
return mybigcamel.Marshal(name)
}
/*
首字母大写
*/
//TitleCase 首字母大写
func TitleCase(name string) string {
vv := []rune(name)
if len(vv) > 0 {

View File

@@ -1,11 +1,11 @@
package gtools
const (
_tag_gorm = "gorm"
_tag_json = "json"
_tagGorm = "gorm"
_tagJSON = "json"
)
//精确匹配类型
//TypeDicMp 精确匹配类型
var TypeDicMp = map[string]string{
"int": "int",
"bigint": "int64",
@@ -19,7 +19,7 @@ var TypeDicMp = map[string]string{
"timestamp": "time.Time",
}
//模糊匹配类型
//TypeMatchMp 模糊匹配类型
var TypeMatchMp = map[string]string{
`int[(]\d+[)]`: "int",
`bigint[(]\d+[)]`: "int64",

View File

@@ -9,7 +9,7 @@ import (
"github.com/xxjwxc/public/tools"
)
// 打印
//Add 打印
func (p *PrintAtom) Add(str ...interface{}) {
var tmp string
for _, v := range str {
@@ -18,27 +18,27 @@ func (p *PrintAtom) Add(str ...interface{}) {
p.lines = append(p.lines, tmp)
}
// 打印
//Generate 打印
func (p *PrintAtom) Generate() []string {
return p.lines
}
//设置元素名字
//SetName 设置元素名字
func (e *GenElement) SetName(name string) {
e.Name = name
}
//设置元素类型
//SetType 设置元素类型
func (e *GenElement) SetType(tp string) {
e.Type = tp
}
//设置注释
//SetNotes 设置注释
func (e *GenElement) SetNotes(notes string) {
e.Notes = notes
}
//添加一个tag标记
//AddTag 添加一个tag标记
func (e *GenElement) AddTag(k string, v string) {
if e.Tags == nil {
e.Tags = make(map[string][]string)
@@ -46,7 +46,7 @@ func (e *GenElement) AddTag(k string, v string) {
e.Tags[k] = append(e.Tags[k], v)
}
//获取结果数据
//Generate 获取结果数据
func (e *GenElement) Generate() string {
tag := ""
var tags []string
@@ -66,32 +66,32 @@ func (e *GenElement) Generate() string {
// struct
//////////////////////////////////////////////////////////////////////////////
//设置创建语句,备份使用
//SetCreatTableStr 设置创建语句,备份使用
func (s *GenStruct) SetCreatTableStr(sql string) {
s.SqlBuildStr = sql
s.SQLBuildStr = sql
}
//获取结果数据
//SetStructName 获取结果数据
func (s *GenStruct) SetStructName(name string) {
s.Name = name
}
//设置注释
func (e *GenStruct) SetNotes(notes string) {
e.Notes = notes
//SetNotes 设置注释
func (s *GenStruct) SetNotes(notes string) {
s.Notes = notes
}
//添加一个/或多个元素
//AddElement 添加一个/或多个元素
func (s *GenStruct) AddElement(e ...GenElement) {
s.Em = append(s.Em, e...)
}
//获取结果数据
//Generate 获取结果数据
func (s *GenStruct) Generate() []string {
var p PrintAtom
if !config.GetSimple() {
p.Add("/******sql******")
p.Add(s.SqlBuildStr)
p.Add(s.SQLBuildStr)
p.Add("******sql******/")
}
p.Add("//", s.Notes)
@@ -108,12 +108,12 @@ func (s *GenStruct) Generate() []string {
// package
//////////////////////////////////////////////////////////////////////////////
//定义包名
//SetPackage 定义包名
func (p *GenPackage) SetPackage(pname string) {
p.Name = pname
}
//通过类型添加import
//AddImport 通过类型添加import
func (p *GenPackage) AddImport(imp string) {
if p.Imports == nil {
p.Imports = make(map[string]string)
@@ -121,12 +121,12 @@ func (p *GenPackage) AddImport(imp string) {
p.Imports[imp] = imp
}
//添加一个结构体
//AddStruct 添加一个结构体
func (p *GenPackage) AddStruct(st GenStruct) {
p.Structs = append(p.Structs, st)
}
//获取结果数据
//Generate 获取结果数据
func (p *GenPackage) Generate() string {
p.genimport() //补充 import

View File

@@ -1,6 +1,6 @@
package generate
//包类
//IPackage 包类
type IPackage interface {
//定义包名
SetPackage(string)
@@ -12,7 +12,7 @@ type IPackage interface {
Generate() string
}
//结构体类
//IStruct 结构体类
type IStruct interface {
//设置创建语句,备份使用
SetCreatTableStr(string)
@@ -30,7 +30,7 @@ type IStruct interface {
Generate() []string
}
//元素类
//IElement 元素类
type IElement interface {
//设置元素名字
SetName(string)
@@ -51,7 +51,7 @@ type IElement interface {
//
//////////////////////////////////////////////////////////////////////////////
//元素类
//GenElement 元素类
type GenElement struct {
Name string //元素名
Type string //类型标记
@@ -59,15 +59,15 @@ type GenElement struct {
Tags map[string][]string //标记
}
//结构体
//GenStruct 结构体
type GenStruct struct {
SqlBuildStr string //创建sql语句
SQLBuildStr string //创建sql语句
Name string //名字
Notes string //注释
Em []GenElement //元素组合
}
//包体
//GenPackage 包体
type GenPackage struct {
Name string //名字
Imports map[string]string //元素组合
@@ -77,12 +77,14 @@ type GenPackage struct {
//间隔
var _interval = "\t"
//EImportsHead .
var EImportsHead = map[string]string{
"stirng": `"string"`,
"time.Time": `"time"`,
"gorm.Model": `"github.com/jinzhu/gorm"`,
}
//PrintAtom .
type PrintAtom struct {
lines []string
}

View File

@@ -10,7 +10,7 @@ import (
"github.com/xxjwxc/public/tools"
)
//开始执行
//Execute 开始执行
func Execute() {
orm := mysqldb.OnInitDBOrm(config.GetMysqlConStr())