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