diff --git a/tool/sql2go/parser.go b/tool/sql2go/parser.go index d5e7f36..8b50a5e 100644 --- a/tool/sql2go/parser.go +++ b/tool/sql2go/parser.go @@ -11,9 +11,16 @@ import ( "fmt" "strings" + "git.zhangdeman.cn/zhangdeman/gopkg/util" + "github.com/xwb1989/sqlparser" ) +const ( + // CreateSQLColumnTPL 每个字段的模版 + CreateSQLColumnTPL = "{FIELD} {TYPE} `json:\"{JSON_TAG}\" gorm:\"column:{COLUMN};default:{DEFAULT_VALUE};{NOT_NULL}\"` // {COMMENT}" +) + // ParseCreateTableSql 解析建表sql // // Author : go_developer@163.com<白茶清欢> @@ -32,12 +39,25 @@ func ParseCreateTableSql(sql string) { r := stmt.(*sqlparser.DDL) for _, item := range r.TableSpec.Columns { - defaultV := item.Type.Default - defaultVal := "-" - if nil != defaultV { - defaultVal += string(defaultV.Val) + "-" + data := map[string]string{ + "{FIELD}": util.SnakeCaseToCamel(item.Name.String()), + "{COLUMN}": item.Name.String(), + "{JSON_TAG}": item.Name.String(), + "{DEFAULT_VALUE}": "", + "{COMMENT}": item.Name.String() + " " + string(item.Type.Comment.Val), + "{TYPE}": sqlTypeMap[item.Type.Type], } - fmt.Println(item.Name.String(), defaultVal, item.Type.NotNull, string(item.Type.Comment.Val)) + if item.Type.NotNull { + data["{NOT_NULL}"] = "NOT NULL" + } + if nil != item.Type.Default { + data["{DEFAULT_VALUE}"] += string(item.Type.Default.Val) + } + val := CreateSQLColumnTPL + for k, v := range data { + val = strings.ReplaceAll(val, k, v) + } + fmt.Println(val) } // fmt.Println(r.TableSpec) }