Skip to content

Commit 1657298

Browse files
committed
增加关键字格式化函数
1 parent 8d82540 commit 1657298

File tree

9 files changed

+467
-395
lines changed

9 files changed

+467
-395
lines changed

cmd_test.go

Lines changed: 213 additions & 190 deletions
Large diffs are not rendered by default.

common/formatter.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// Copyright (C) 2019-2020, Xiongfa Li.
2+
// @author xiongfa.li
3+
// @version V1.0
4+
// Description:
5+
6+
package common
7+
8+
type KeyWordFormatter func(string) string
9+
10+
var KwFormatter = MysqlKeyWordFormatter
11+
var kwFormatterMap = map[string]KeyWordFormatter{
12+
"mysql": MysqlKeyWordFormatter,
13+
"postgres": PostgresKeyWordFormatter,
14+
}
15+
16+
func MysqlKeyWordFormatter(src string) string {
17+
return "`" + src + "`"
18+
}
19+
20+
func PostgresKeyWordFormatter(src string) string {
21+
return `"` + src + `"`
22+
}
23+
24+
func SelectKeyWordFormatter(driver string) {
25+
v := kwFormatterMap[driver]
26+
if v != nil {
27+
KwFormatter = v
28+
}
29+
}

common/model.go

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,34 +3,34 @@
33
* All right reserved.
44
* @author xiongfa.li
55
* @version V1.0
6-
* Description:
6+
* Description:
77
*/
88

99
package common
1010

1111
type ModelInfo struct {
12-
ColumnName string
13-
DataType string
14-
Nullable string
15-
ColumnKey string
16-
Comment string
17-
Tag string
12+
ColumnName string
13+
DataType string
14+
Nullable string
15+
ColumnKey string
16+
Comment string
17+
Tag string
1818
}
1919

20-
2120
const (
22-
MethodFlag = "method"
23-
OutPutSuffixMethod = "output"
24-
GenerateMethod = "generate"
21+
MethodFlag = "method"
22+
OutPutSuffixMethod = "output"
23+
GenerateMethod = "generate"
2524
)
2625

2726
type GenerateInfo struct {
28-
Package string `json:"package"`
29-
Table string `json:"table"`
30-
Models []ModelInfo `json:"models"`
27+
Driver string `json:"driver"`
28+
Package string `json:"package"`
29+
Table string `json:"table"`
30+
Models []ModelInfo `json:"models"`
3131
}
3232

3333
type PluginResult struct {
34-
Code int `json:"code"`
35-
Message string `json:"message"`
34+
Code int `json:"code"`
35+
Message string `json:"message"`
3636
}

gen_model.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"github.com/xfali/gobatis-cmd/common"
1414
"github.com/xfali/gobatis-cmd/io"
1515
"strings"
16+
"time"
1617
)
1718

1819
func findTime(model []common.ModelInfo) bool {
@@ -41,6 +42,13 @@ func genModel(config Config, tableName string, model []common.ModelInfo) {
4142
modelName := common.TableName2ModelName(tableName)
4243
builder := strings.Builder{}
4344
if !exist {
45+
builder.WriteString(fmt.Sprintf("//This file was generated by xfali/gobatis-cmd at"))
46+
builder.WriteString(common.Newline())
47+
builder.WriteString("//")
48+
builder.WriteString(time.Now().String())
49+
builder.WriteString(common.Newline())
50+
builder.WriteString(common.Newline())
51+
4452
builder.WriteString("package ")
4553
builder.WriteString(config.PackageName)
4654
builder.WriteString(common.Newline())

gen_proxy_v2.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"github.com/xfali/gobatis-cmd/common"
1414
"github.com/xfali/gobatis-cmd/io"
1515
"strings"
16+
"time"
1617
)
1718

1819
func genV2Proxy(config Config, tableName string, models []common.ModelInfo) {
@@ -26,6 +27,13 @@ func genV2Proxy(config Config, tableName string, models []common.ModelInfo) {
2627

2728
modelName := common.TableName2ModelName(tableName)
2829
builder := strings.Builder{}
30+
builder.WriteString(fmt.Sprintf("//This file was generated by xfali/gobatis-cmd at"))
31+
builder.WriteString(common.Newline())
32+
builder.WriteString("//")
33+
builder.WriteString(time.Now().String())
34+
builder.WriteString(common.Newline())
35+
builder.WriteString(common.Newline())
36+
2937
builder.WriteString("package ")
3038
builder.WriteString(config.PackageName)
3139
builder.WriteString(common.Newline())

gen_template.go

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,11 @@ import (
1313
"github.com/xfali/gobatis-cmd/common"
1414
"github.com/xfali/gobatis-cmd/io"
1515
"strings"
16+
"time"
1617
)
1718

1819
func genTemplate(config Config, tableName string, model []common.ModelInfo) {
20+
common.SelectKeyWordFormatter(config.Driver)
1921
targetDir := config.Path + "template/"
2022
if !io.IsPathExists(targetDir) {
2123
io.Mkdir(targetDir)
@@ -33,16 +35,19 @@ func genTemplate(config Config, tableName string, model []common.ModelInfo) {
3335
func buildTmplMapper(builder *strings.Builder, config Config, tableName string, model []common.ModelInfo) {
3436
modelName := common.TableName2ModelName(tableName)
3537
columns := formatXmlColumns(tableName, model)
36-
tableName = formatBackQuoteXml(tableName)
38+
tableName = common.KwFormatter(tableName)
39+
40+
builder.WriteString("{{/*This file was generated by xfali/gobatis-cmd at*/}}")
41+
builder.WriteString(common.Newline())
42+
builder.WriteString(fmt.Sprintf("{{/*%s*/}}", time.Now().String()))
43+
builder.WriteString(common.Newline())
44+
builder.WriteString(common.Newline())
3745

3846
//select
3947
builder.WriteString(fmt.Sprintf(`{{define "select%s"}}`, modelName))
4048
builder.WriteString(common.Newline())
4149

42-
builder.WriteString(fmt.Sprintf(`{{$COLUMNS := "%s"}}`, columns))
43-
builder.WriteString(common.Newline())
44-
45-
builder.WriteString(fmt.Sprintf(`SELECT {{$COLUMNS}} FROM %s`, tableName))
50+
builder.WriteString(fmt.Sprintf(`SELECT %s FROM %s`, columns, tableName))
4651
builder.WriteString(common.Newline())
4752

4853
builder.WriteString(genTmplWhere(modelName, model))
@@ -56,10 +61,7 @@ func buildTmplMapper(builder *strings.Builder, config Config, tableName string,
5661
builder.WriteString(fmt.Sprintf(`{{define "insert%s"}}`, modelName))
5762
builder.WriteString(common.Newline())
5863

59-
builder.WriteString(fmt.Sprintf(`{{$COLUMNS := "%s"}}`, columns))
60-
builder.WriteString(common.Newline())
61-
62-
builder.WriteString(fmt.Sprintf(`INSERT INTO %s({{$COLUMNS}})`, tableName))
64+
builder.WriteString(fmt.Sprintf(`INSERT INTO %s(%s)`, tableName, columns))
6365
builder.WriteString(common.Newline())
6466

6567
builder.WriteString("VALUES(")

gen_xml.go

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,11 @@ import (
1313
"github.com/xfali/gobatis-cmd/common"
1414
"github.com/xfali/gobatis-cmd/io"
1515
"strings"
16+
"time"
1617
)
1718

1819
func genXml(config Config, tableName string, model []common.ModelInfo) {
20+
common.SelectKeyWordFormatter(config.Driver)
1921
if config.MapperFile == "xml" {
2022
xmlDir := config.Path + "xml/"
2123
if !io.IsPathExists(xmlDir) {
@@ -27,7 +29,7 @@ func genXml(config Config, tableName string, model []common.ModelInfo) {
2729

2830
builder := strings.Builder{}
2931
buildMapper(&builder, config, tableName, model,
30-
formatXmlColumns, formatBackQuoteXml, formatBackQuoteXml)
32+
formatXmlColumns, common.KwFormatter, common.KwFormatter)
3133
io.Write(xmlFile, []byte(builder.String()))
3234
}
3335
} else if config.MapperFile == "go" {
@@ -64,6 +66,12 @@ type fomatter func(string) string
6466
func buildMapper(builder *strings.Builder, config Config, tableName string, model []common.ModelInfo,
6567
columnsFunc func (string, []common.ModelInfo) string, tableFunc, columnFunc fomatter) {
6668
modelName := common.TableName2ModelName(tableName)
69+
builder.WriteString(fmt.Sprintf("<!--This file was generated by xfali/gobatis-cmd at -->"))
70+
builder.WriteString(common.Newline())
71+
builder.WriteString(fmt.Sprintf("<!--%s-->", time.Now().String()))
72+
builder.WriteString(common.Newline())
73+
builder.WriteString(common.Newline())
74+
6775
builder.WriteString(fmt.Sprintf("<mapper namespace=\"%s.%s\">", config.PackageName, modelName))
6876
builder.WriteString(common.Newline())
6977

@@ -254,38 +262,29 @@ func getIfStr(ctype, name string) string {
254262
return strings.Replace(sqlType2IfFormatMap[ctype], "%s", fmt.Sprintf("{%s}", name), -1)
255263
}
256264

257-
func formatGoColumns(tableName string, model []common.ModelInfo) string {
258-
columns := "` + \""
265+
func formatXmlColumns(tableName string, model []common.ModelInfo) string {
266+
columns := ""
259267
for i := range model {
260-
columns += formatColumnName(tableName, model[i].ColumnName)
268+
columns += common.KwFormatter(model[i].ColumnName)
261269
if i < len(model)-1 {
262270
columns += ","
263271
}
264272
}
265-
columns += "\" + `"
266273
return columns
267274
}
268275

269-
func formatXmlColumns(tableName string, model []common.ModelInfo) string {
270-
columns := ""
271-
tableName = fmt.Sprintf("`%s`", tableName)
276+
func formatGoColumns(tableName string, model []common.ModelInfo) string {
277+
columns := "` + \""
272278
for i := range model {
273-
columns += formatColumnName(tableName, model[i].ColumnName)
279+
columns += common.KwFormatter(model[i].ColumnName)
274280
if i < len(model)-1 {
275281
columns += ","
276282
}
277283
}
284+
columns += "\" + `"
278285
return columns
279286
}
280287

281288
func formatBackQuoteGo(src string) string {
282289
return "` + \"`" + src + "`\" + `"
283290
}
284-
285-
func formatBackQuoteXml(src string) string {
286-
return fmt.Sprintf("`%s`", src)
287-
}
288-
289-
func formatColumnName(tableName, columnName string) string {
290-
return fmt.Sprintf("`%s`", columnName)
291-
}

0 commit comments

Comments
 (0)