Compare commits
5 Commits
8c75d91915
...
master
Author | SHA1 | Date | |
---|---|---|---|
6a8592af37 | |||
0e48ae0041 | |||
69a4a3925e | |||
e7f4e3fca2 | |||
e2ac04a45d |
@ -7,47 +7,50 @@
|
||||
// Date : 2021-10-25 4:50 下午
|
||||
package sql2go
|
||||
|
||||
import "git.zhangdeman.cn/zhangdeman/consts"
|
||||
|
||||
// sqlTypeMap mysql数据类型 => go 数据类型映射
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 4:50 下午 2021/10/25
|
||||
var sqlTypeMap = map[string]string{
|
||||
"int": "int",
|
||||
"integer": "int",
|
||||
"tinyint": "int8",
|
||||
"smallint": "int16",
|
||||
"mediumint": "int32",
|
||||
"bigint": "int64",
|
||||
"int unsigned": "uint",
|
||||
"integer unsigned": "uint",
|
||||
"tinyint unsigned": "uint8",
|
||||
"smallint unsigned": "uint16",
|
||||
"mediumint unsigned": "uint32",
|
||||
"bigint unsigned": "uint64",
|
||||
"int": consts.DataTypeInt.String(),
|
||||
"integer": consts.DataTypeInt.String(),
|
||||
"tinyint": consts.DataTypeInt8.String(),
|
||||
"smallint": consts.DataTypeInt16.String(),
|
||||
"mediumint": consts.DataTypeInt32.String(),
|
||||
"bigint": consts.DataTypeInt64.String(),
|
||||
"int unsigned": consts.DataTypeUint.String(),
|
||||
"integer unsigned": consts.DataTypeUint.String(),
|
||||
"tinyint unsigned": consts.DataTypeUint8.String(),
|
||||
"smallint unsigned": consts.DataTypeUint16.String(),
|
||||
"mediumint unsigned": consts.DataTypeUint32.String(),
|
||||
"bigint unsigned": consts.DataTypeUint64.String(),
|
||||
"bit": "byte",
|
||||
"bool": "bool",
|
||||
"enum": "string",
|
||||
"set": "string",
|
||||
"varchar": "string",
|
||||
"char": "string",
|
||||
"tinytext": "string",
|
||||
"mediumtext": "string",
|
||||
"text": "string",
|
||||
"longtext": "string",
|
||||
"blob": "string",
|
||||
"tinyblob": "string",
|
||||
"mediumblob": "string",
|
||||
"longblob": "string",
|
||||
"bool": consts.DataTypeBool.String(),
|
||||
"enum": consts.DataTypeString.String(),
|
||||
"set": consts.DataTypeString.String(),
|
||||
"varchar": consts.DataTypeString.String(),
|
||||
"char": consts.DataTypeString.String(),
|
||||
"tinytext": consts.DataTypeString.String(),
|
||||
"mediumtext": consts.DataTypeString.String(),
|
||||
"text": consts.DataTypeString.String(),
|
||||
"longtext": consts.DataTypeString.String(),
|
||||
"blob": consts.DataTypeString.String(),
|
||||
"tinyblob": consts.DataTypeString.String(),
|
||||
"mediumblob": consts.DataTypeString.String(),
|
||||
"longblob": consts.DataTypeString.String(),
|
||||
"date": "time.Time",
|
||||
"datetime": "time.Time",
|
||||
"timestamp": "time.Time",
|
||||
"time": "time.Time",
|
||||
"float": "float64",
|
||||
"double": "float64",
|
||||
"decimal": "float64",
|
||||
"binary": "string",
|
||||
"varbinary": "string",
|
||||
"float": consts.DataTypeFloat64.String(),
|
||||
"double": consts.DataTypeFloat64.String(),
|
||||
"decimal": consts.DataTypeFloat64.String(),
|
||||
"binary": consts.DataTypeString.String(),
|
||||
"varbinary": consts.DataTypeString.String(),
|
||||
"json": consts.DataTypeString.String(),
|
||||
}
|
||||
|
||||
const (
|
||||
|
@ -9,9 +9,10 @@ package sql2go
|
||||
|
||||
import (
|
||||
"errors"
|
||||
wrapperType "git.zhangdeman.cn/zhangdeman/wrapper"
|
||||
"strings"
|
||||
|
||||
wrapperType "git.zhangdeman.cn/zhangdeman/wrapper"
|
||||
|
||||
"github.com/xwb1989/sqlparser"
|
||||
)
|
||||
|
||||
@ -93,11 +94,14 @@ func generateTable(tableName string, modelStructName string, columnList []*sqlpa
|
||||
|
||||
for _, item := range columnList {
|
||||
comment := ""
|
||||
if item.Type.Comment == nil {
|
||||
if item.Type.Comment == nil || item.Type.Comment.Val == nil {
|
||||
comment = item.Name.String()
|
||||
} else {
|
||||
comment = string(item.Type.Comment.Val)
|
||||
}
|
||||
if comment == "" {
|
||||
comment = item.Name.String()
|
||||
}
|
||||
data := map[string]string{
|
||||
"{FIELD}": wrapperType.String(item.Name.String()).SnakeCaseToCamel(),
|
||||
"{COLUMN}": item.Name.String(),
|
||||
@ -106,6 +110,10 @@ func generateTable(tableName string, modelStructName string, columnList []*sqlpa
|
||||
"{COMMENT}": comment,
|
||||
"{TYPE}": sqlTypeMap[item.Type.Type],
|
||||
}
|
||||
if item.Type.Unsigned {
|
||||
// 无符号
|
||||
data["{TYPE}"] = sqlTypeMap[item.Type.Type+" unsigned"]
|
||||
}
|
||||
/*if data["{FIELD}"] == "ID" {
|
||||
basic.PrimaryFieldType = data["{TYPE}"]
|
||||
}*/
|
||||
@ -150,17 +158,20 @@ return "{{TABLE_NAME}}"
|
||||
func generateTableColumnDefined(modelStructName string, columnList []*sqlparser.ColumnDefinition) (string, string, string) {
|
||||
columnDefineName := modelStructName + "Column"
|
||||
structFieldResult := "type " + columnDefineName + " struct { \n"
|
||||
structFieldDescInstanceResult := "&" + columnDefineName + "{ \n"
|
||||
structFieldDescInstanceResult := columnDefineName + "{ \n"
|
||||
structFieldCommentInstanceResult := "map[string]string{ \n"
|
||||
for _, column := range columnList {
|
||||
comment := column.Name.String()
|
||||
if nil != column.Type.Comment {
|
||||
comment = string(column.Type.Comment.Val)
|
||||
}
|
||||
if comment == "" {
|
||||
comment = column.Name.String()
|
||||
}
|
||||
dataMap := map[string]string{
|
||||
"{FIELD}": wrapperType.String(column.Name.String()).SnakeCaseToCamel(),
|
||||
"{JSON_TAG}": column.Name.String(),
|
||||
"{FIELD_COMMENT}": wrapperType.TernaryOperator.String(
|
||||
column.Type.Comment == nil,
|
||||
wrapperType.String(column.Name.String()),
|
||||
wrapperType.String(string(column.Type.Comment.Val)),
|
||||
).Value(),
|
||||
"{FIELD}": wrapperType.String(column.Name.String()).SnakeCaseToCamel(),
|
||||
"{JSON_TAG}": column.Name.String(),
|
||||
"{FIELD_COMMENT}": comment,
|
||||
}
|
||||
|
||||
structFieldDefine := TableColumnTpl
|
||||
@ -181,7 +192,7 @@ func generateTableColumnDefined(modelStructName string, columnList []*sqlparser.
|
||||
tableColumnFunction := `
|
||||
|
||||
// Columns 获取表字段定义
|
||||
func ({TABLE_FIRST} {MODEL_STRUCT_NAME}) Columns() *{COLUMN_DEFINED} {
|
||||
func ({TABLE_FIRST} {MODEL_STRUCT_NAME}) Columns() {COLUMN_DEFINED} {
|
||||
return {STRUCT_FIELD_DESC_DEFINED_RESULT}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user