🐞 fix(gen): pg gen of insert (#1591)
Co-authored-by: kurimi1 <d0n41df@gmail.com>
This commit is contained in:
@@ -223,7 +223,7 @@ func (g *defaultGenerator) genModel(in parser.Table, withCache bool) (string, er
|
|||||||
table.UniqueCacheKey = uniqueKey
|
table.UniqueCacheKey = uniqueKey
|
||||||
table.ContainsUniqueCacheKey = len(uniqueKey) > 0
|
table.ContainsUniqueCacheKey = len(uniqueKey) > 0
|
||||||
|
|
||||||
importsCode, err := genImports(withCache, in.ContainsTime(), table)
|
importsCode, err := genImports(withCache, in.ContainsTime(), table, g.isPostgreSql)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
"github.com/zeromicro/go-zero/tools/goctl/util/pathx"
|
"github.com/zeromicro/go-zero/tools/goctl/util/pathx"
|
||||||
)
|
)
|
||||||
|
|
||||||
func genImports(withCache, timeImport bool, table Table) (string, error) {
|
func genImports(withCache, timeImport bool, table Table, postgreSql bool) (string, error) {
|
||||||
if withCache {
|
if withCache {
|
||||||
text, err := pathx.LoadTemplate(category, importsTemplateFile, template.Imports)
|
text, err := pathx.LoadTemplate(category, importsTemplateFile, template.Imports)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -23,10 +23,18 @@ func genImports(withCache, timeImport bool, table Table) (string, error) {
|
|||||||
|
|
||||||
return buffer.String(), nil
|
return buffer.String(), nil
|
||||||
}
|
}
|
||||||
|
var text string
|
||||||
text, err := pathx.LoadTemplate(category, importsWithNoCacheTemplateFile, template.ImportsNoCache)
|
var err error
|
||||||
if err != nil {
|
if postgreSql {
|
||||||
return "", err
|
text, err = pathx.LoadTemplate(category, importsWithNoCacheTemplateFile, template.ImportsNoCachePg)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
text, err = pathx.LoadTemplate(category, importsWithNoCacheTemplateFile, template.ImportsNoCache)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
buffer, err := util.With("import").Parse(text).Execute(map[string]interface{}{
|
buffer, err := util.With("import").Parse(text).Execute(map[string]interface{}{
|
||||||
|
|||||||
@@ -46,9 +46,19 @@ func genInsert(table Table, withCache, postgreSql bool) (string, string, error)
|
|||||||
}
|
}
|
||||||
|
|
||||||
camel := table.Name.ToCamel()
|
camel := table.Name.ToCamel()
|
||||||
text, err := pathx.LoadTemplate(category, insertTemplateFile, template.Insert)
|
var text string
|
||||||
if err != nil {
|
var err error
|
||||||
return "", "", err
|
// if database is postgresql
|
||||||
|
if postgreSql {
|
||||||
|
text, err = pathx.LoadTemplate(category, insertTemplateFile, template.InsertPg)
|
||||||
|
if err != nil {
|
||||||
|
return "", "", err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
text, err = pathx.LoadTemplate(category, insertTemplateFile, template.Insert)
|
||||||
|
if err != nil {
|
||||||
|
return "", "", err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
output, err := util.With("insert").
|
output, err := util.With("insert").
|
||||||
@@ -69,9 +79,17 @@ func genInsert(table Table, withCache, postgreSql bool) (string, string, error)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// interface method
|
// interface method
|
||||||
text, err = pathx.LoadTemplate(category, insertTemplateMethodFile, template.InsertMethod)
|
// if database is postgresql
|
||||||
if err != nil {
|
if postgreSql {
|
||||||
return "", "", err
|
text, err = pathx.LoadTemplate(category, insertTemplateMethodFile, template.InsertMethodPg)
|
||||||
|
if err != nil {
|
||||||
|
return "", "", err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
text, err = pathx.LoadTemplate(category, insertTemplateMethodFile, template.InsertMethod)
|
||||||
|
if err != nil {
|
||||||
|
return "", "", err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
insertMethodOutput, err := util.With("insertMethod").Parse(text).Execute(map[string]interface{}{
|
insertMethodOutput, err := util.With("insertMethod").Parse(text).Execute(map[string]interface{}{
|
||||||
|
|||||||
@@ -30,4 +30,17 @@ var (
|
|||||||
"github.com/zeromicro/go-zero/core/stringx"
|
"github.com/zeromicro/go-zero/core/stringx"
|
||||||
)
|
)
|
||||||
`
|
`
|
||||||
|
// pg
|
||||||
|
ImportsNoCachePg = `import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
{{if .time}}"time"{{end}}
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/builder"
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/sqlc"
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||||
|
"github.com/zeromicro/go-zero/core/stringx"
|
||||||
|
)
|
||||||
|
`
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -15,5 +15,24 @@ func (m *default{{.upperStartCamelObject}}Model) Insert(ctx context.Context, dat
|
|||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
|
// pg
|
||||||
|
var InsertPg = `
|
||||||
|
func (m *default{{.upperStartCamelObject}}Model) Insert(data *{{.upperStartCamelObject}}) (int64,error) {
|
||||||
|
{{if .withCache}}{{if .containsIndexCache}}{{.keys}}
|
||||||
|
ret, err := m.Exec(func(conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||||
|
query := fmt.Sprintf("insert into %s (%s) values ({{.expression}})", m.table, {{.lowerStartCamelObject}}RowsExpectAutoSet)
|
||||||
|
return conn.Exec(query, {{.expressionValues}})
|
||||||
|
}, {{.keyValues}}){{else}}query := fmt.Sprintf("insert into %s (%s) values ({{.expression}})", m.table, {{.lowerStartCamelObject}}RowsExpectAutoSet)
|
||||||
|
ret,err:=m.ExecNoCache(query, {{.expressionValues}})
|
||||||
|
{{end}}{{else}}query := fmt.Sprintf("insert into %s (%s) values ({{.expression}}) RETURNING id", m.table, {{.lowerStartCamelObject}}RowsExpectAutoSet)
|
||||||
|
var id int64
|
||||||
|
err:=m.conn.QueryRow(&id, query, {{.expressionValues}}){{end}}
|
||||||
|
return id,err
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
// InsertMethod defines an interface method template for insert code in model
|
// InsertMethod defines an interface method template for insert code in model
|
||||||
var InsertMethod = `Insert(ctx context.Context, data *{{.upperStartCamelObject}}) (sql.Result,error)`
|
var InsertMethod = `Insert(ctx context.Context, data *{{.upperStartCamelObject}}) (sql.Result,error)`
|
||||||
|
|
||||||
|
// pg
|
||||||
|
var InsertMethodPg = `Insert(ctx context.Context, data *{{.upperStartCamelObject}}) (int64,error)`
|
||||||
|
|||||||
Reference in New Issue
Block a user