goctl added
This commit is contained in:
17
tools/goctl/model/sql/template/delete.go
Normal file
17
tools/goctl/model/sql/template/delete.go
Normal file
@@ -0,0 +1,17 @@
|
||||
package sqltemplate
|
||||
|
||||
var Delete = `
|
||||
func (m *{{.upperObject}}Model) Delete({{.lowerPrimaryKey}} {{.dataType}}) error {
|
||||
{{if .containsCache}}{{if .isNotPrimaryKey}}data,err:=m.FindOne({{.lowerPrimaryKey}})
|
||||
if err!=nil{
|
||||
return err
|
||||
}{{end}}
|
||||
{{.keys}}
|
||||
_, err {{if .isNotPrimaryKey}}={{else}}:={{end}} m.Exec(func(conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||
query := ` + "`" + `delete from ` + "` +" + ` m.table + ` + " `" + ` where {{.snakePrimaryKey}} = ?` + "`" + `
|
||||
return conn.Exec(query, {{.lowerPrimaryKey}})
|
||||
}, {{.keyValues}}){{else}}query := ` + "`" + `delete from ` + "` +" + ` m.table + ` + " `" + ` where {{.snakePrimaryKey}} = ?` + "`" + `
|
||||
_,err:=m.ExecNoCache(query, {{.lowerPrimaryKey}}){{end}}
|
||||
return err
|
||||
}
|
||||
`
|
||||
11
tools/goctl/model/sql/template/errors.go
Normal file
11
tools/goctl/model/sql/template/errors.go
Normal file
@@ -0,0 +1,11 @@
|
||||
package sqltemplate
|
||||
|
||||
var Error = `package model
|
||||
|
||||
import "zero/core/stores/sqlx"
|
||||
|
||||
var (
|
||||
ErrNotFound = sqlx.ErrNotFound
|
||||
)
|
||||
|
||||
`
|
||||
3
tools/goctl/model/sql/template/field.go
Normal file
3
tools/goctl/model/sql/template/field.go
Normal file
@@ -0,0 +1,3 @@
|
||||
package sqltemplate
|
||||
|
||||
var Field = `{{.name}} {{.type}} {{.tag}} {{.comment}}`
|
||||
115
tools/goctl/model/sql/template/find.go
Normal file
115
tools/goctl/model/sql/template/find.go
Normal file
@@ -0,0 +1,115 @@
|
||||
package sqltemplate
|
||||
|
||||
// 通过id查询
|
||||
var FindOne = `
|
||||
func (m *{{.upperObject}}Model) FindOne({{.lowerPrimaryKey}} {{.dataType}}) (*{{.upperObject}}, error) {
|
||||
{{if .withCache}}{{.cacheKey}}
|
||||
var resp {{.upperObject}}
|
||||
err := m.QueryRow(&resp, {{.cacheKeyVariable}}, func(conn sqlx.SqlConn, v interface{}) error {
|
||||
query := ` + "`" + `select ` + "`" + ` + {{.lowerObject}}Rows + ` + "`" + ` from ` + "` + " + `m.table ` + " + `" + ` where {{.snakePrimaryKey}} = ? limit 1` + "`" + `
|
||||
return conn.QueryRow(v, query, {{.lowerPrimaryKey}})
|
||||
})
|
||||
switch err {
|
||||
case nil:
|
||||
return &resp, nil
|
||||
case sqlc.ErrNotFound:
|
||||
return nil, ErrNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}{{else}}query := ` + "`" + `select ` + "`" + ` + {{.lowerObject}}Rows + ` + "`" + ` from ` + "` + " + `m.table ` + " + `" + ` where {{.snakePrimaryKey}} = ? limit 1` + "`" + `
|
||||
var resp {{.upperObject}}
|
||||
err := m.QueryRowNoCache(&resp, query, {{.lowerPrimaryKey}})
|
||||
switch err {
|
||||
case nil:
|
||||
return &resp, nil
|
||||
case sqlc.ErrNotFound:
|
||||
return nil, ErrNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}{{end}}
|
||||
}
|
||||
`
|
||||
|
||||
// 通过指定字段查询
|
||||
var FindOneByField = `
|
||||
func (m *{{.upperObject}}Model) FindOneBy{{.upperFields}}({{.in}}) (*{{.upperObject}}, error) {
|
||||
{{if .onlyOneFiled}}{{if .withCache}}{{.cacheKey}}
|
||||
var resp {{.upperObject}}
|
||||
err := m.QueryRowIndex(&resp, {{.cacheKeyVariable}}, func(primary interface{}) string {
|
||||
return fmt.Sprintf("%s%v", {{.primaryKeyDefine}}, primary)
|
||||
}, func(conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
query := ` + "`" + `select ` + "`" + ` + {{.lowerObject}}Rows + ` + "`" + ` from ` + "` + " + `m.table ` + " + `" + ` where {{.snakeField}} = ? limit 1` + "`" + `
|
||||
if err := conn.QueryRow(&resp, query, {{.lowerField}}); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return resp.{{.UpperPrimaryKey}}, nil
|
||||
}, func(conn sqlx.SqlConn, v, primary interface{}) error {
|
||||
query := ` + "`" + `select ` + "`" + ` + {{.lowerObject}}Rows + ` + "`" + ` from ` + "` + " + `m.table ` + " + `" + ` where {{.primarySnakeField}} = ? limit 1` + "`" + `
|
||||
return conn.QueryRow(v, query, primary)
|
||||
})
|
||||
switch err {
|
||||
case nil:
|
||||
return &resp, nil
|
||||
case sqlc.ErrNotFound:
|
||||
return nil, ErrNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}{{else}}var resp {{.upperObject}}
|
||||
query := ` + "`" + `select ` + "`" + ` + {{.lowerObject}}Rows + ` + "`" + ` from ` + "` + " + `m.table ` + " + `" + ` where {{.expression}} limit 1` + "`" + `
|
||||
err := m.QueryRowNoCache(&resp, query, {{.expressionValues}})
|
||||
switch err {
|
||||
case nil:
|
||||
return &resp, nil
|
||||
case sqlc.ErrNotFound:
|
||||
return nil, ErrNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}{{end}}{{else}}var resp {{.upperObject}}
|
||||
query := ` + "`" + `select ` + "`" + ` + {{.lowerObject}}Rows + ` + "`" + ` from ` + "` + " + `m.table ` + " + `" + ` where {{.expression}} limit 1` + "`" + `
|
||||
err := m.QueryRowNoCache(&resp, query, {{.expressionValues}})
|
||||
switch err {
|
||||
case nil:
|
||||
return &resp, nil
|
||||
case sqlc.ErrNotFound:
|
||||
return nil, ErrNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}{{end}}
|
||||
}
|
||||
`
|
||||
|
||||
// 查询all
|
||||
var FindAllByField = `
|
||||
func (m *{{.upperObject}}Model) FindAllBy{{.upperFields}}({{.in}}) ([]*{{.upperObject}}, error) {
|
||||
var resp []*{{.upperObject}}
|
||||
query := ` + "`" + `select ` + "`" + ` + {{.lowerObject}}Rows + ` + "`" + ` from ` + "` + " + `m.table ` + " + `" + ` where {{.expression}}` + "`" + `
|
||||
err := m.QueryRowsNoCache(&resp, query, {{.expressionValues}})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return resp, nil
|
||||
}
|
||||
`
|
||||
|
||||
// limit分页查询
|
||||
var FindLimitByField = `
|
||||
func (m *{{.upperObject}}Model) FindLimitBy{{.upperFields}}({{.in}}, page, limit int) ([]*{{.upperObject}}, error) {
|
||||
var resp []*{{.upperObject}}
|
||||
query := ` + "`" + `select ` + "`" + ` + {{.lowerObject}}Rows + ` + "`" + `from ` + "` + " + `m.table ` + " + `" + ` where {{.expression}} order by {{.sortExpression}} limit ?,?` + "`" + `
|
||||
err := m.QueryRowsNoCache(&resp, query, {{.expressionValues}}, (page-1)*limit, limit)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
func (m *{{.upperObject}}Model) FindAllCountBy{{.upperFields}}({{.in}}) (int64, error) {
|
||||
var count int64
|
||||
query := ` + "`" + `select count(1) from ` + "` + " + `m.table ` + " + `" + ` where {{.expression}} ` + "`" + `
|
||||
err := m.QueryRowNoCache(&count, query, {{.expressionValues}})
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return count, nil
|
||||
}
|
||||
`
|
||||
15
tools/goctl/model/sql/template/import.go
Normal file
15
tools/goctl/model/sql/template/import.go
Normal file
@@ -0,0 +1,15 @@
|
||||
package sqltemplate
|
||||
|
||||
var Imports = `
|
||||
import (
|
||||
{{if .containsCache}}"database/sql"
|
||||
"fmt"{{end}}
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"zero/core/stores/cache"
|
||||
"zero/core/stores/sqlc"
|
||||
"zero/core/stores/sqlx"
|
||||
"zero/core/stringx"
|
||||
)
|
||||
`
|
||||
9
tools/goctl/model/sql/template/insert.go
Normal file
9
tools/goctl/model/sql/template/insert.go
Normal file
@@ -0,0 +1,9 @@
|
||||
package sqltemplate
|
||||
|
||||
var Insert = `
|
||||
func (m *{{.upperObject}}Model) Insert(data {{.upperObject}}) error {
|
||||
query := ` + "`" + `insert into ` + "`" + ` + m.table + ` + "`(` + " + `{{.lowerObject}}RowsExpectAutoSet` + " + `) value ({{.expression}})` " + `
|
||||
_, err := m.ExecNoCache(query, {{.expressionValues}})
|
||||
return err
|
||||
}
|
||||
`
|
||||
12
tools/goctl/model/sql/template/model.go
Normal file
12
tools/goctl/model/sql/template/model.go
Normal file
@@ -0,0 +1,12 @@
|
||||
package sqltemplate
|
||||
|
||||
var Model = `package model
|
||||
{{.imports}}
|
||||
{{.vars}}
|
||||
{{.types}}
|
||||
{{.new}}
|
||||
{{.insert}}
|
||||
{{.find}}
|
||||
{{.update}}
|
||||
{{.delete}}
|
||||
`
|
||||
10
tools/goctl/model/sql/template/new.go
Normal file
10
tools/goctl/model/sql/template/new.go
Normal file
@@ -0,0 +1,10 @@
|
||||
package sqltemplate
|
||||
|
||||
var New = `
|
||||
func New{{.upperObject}}Model(conn sqlx.SqlConn, c cache.CacheConf, table string) *{{.upperObject}}Model {
|
||||
return &{{.upperObject}}Model{
|
||||
CachedConn: sqlc.NewConn(conn, c),
|
||||
table: table,
|
||||
}
|
||||
}
|
||||
`
|
||||
3
tools/goctl/model/sql/template/tag.go
Normal file
3
tools/goctl/model/sql/template/tag.go
Normal file
@@ -0,0 +1,3 @@
|
||||
package sqltemplate
|
||||
|
||||
var Tag = "`db:\"{{.field}}\"`"
|
||||
14
tools/goctl/model/sql/template/types.go
Normal file
14
tools/goctl/model/sql/template/types.go
Normal file
@@ -0,0 +1,14 @@
|
||||
package sqltemplate
|
||||
|
||||
var Types = `
|
||||
type (
|
||||
{{.upperObject}}Model struct {
|
||||
sqlc.CachedConn
|
||||
table string
|
||||
}
|
||||
|
||||
{{.upperObject}} struct {
|
||||
{{.fields}}
|
||||
}
|
||||
)
|
||||
`
|
||||
13
tools/goctl/model/sql/template/update.go
Normal file
13
tools/goctl/model/sql/template/update.go
Normal file
@@ -0,0 +1,13 @@
|
||||
package sqltemplate
|
||||
|
||||
var Update = `
|
||||
func (m *{{.upperObject}}Model) Update(data {{.upperObject}}) error {
|
||||
{{if .containsCache}}{{.primaryCacheKey}}
|
||||
_, err := m.Exec(func(conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||
query := ` + "`" + `update ` + "` +" + `m.table +` + "` " + `set ` + "` +" + `{{.lowerObject}}RowsWithPlaceHolder` + " + `" + ` where {{.primarySnakeCase}} = ?` + "`" + `
|
||||
return conn.Exec(query, {{.expressionValues}})
|
||||
}, {{.primaryKeyVariable}}){{else}}query := ` + "`" + `update ` + "` +" + `m.table +` + "` " + `set ` + "` +" + `{{.lowerObject}}RowsWithPlaceHolder` + " + `" + ` where {{.primarySnakeCase}} = ?` + "`" + `
|
||||
_,err:=m.ExecNoCache(query, {{.expressionValues}}){{end}}
|
||||
return err
|
||||
}
|
||||
`
|
||||
14
tools/goctl/model/sql/template/vars.go
Normal file
14
tools/goctl/model/sql/template/vars.go
Normal file
@@ -0,0 +1,14 @@
|
||||
package sqltemplate
|
||||
|
||||
var Vars = `
|
||||
var (
|
||||
{{.lowerObject}}FieldNames = builderx.FieldNames(&{{.upperObject}}{})
|
||||
{{.lowerObject}}Rows = strings.Join({{.lowerObject}}FieldNames, ",")
|
||||
{{.lowerObject}}RowsExpectAutoSet = strings.Join(stringx.Remove({{.lowerObject}}FieldNames, "{{.snakePrimaryKey}}", "create_time", "update_time"), ",")
|
||||
{{.lowerObject}}RowsWithPlaceHolder = strings.Join(stringx.Remove({{.lowerObject}}FieldNames, "{{.snakePrimaryKey}}", "create_time", "update_time"), "=?,") + "=?"
|
||||
|
||||
{{.keysDefine}}
|
||||
|
||||
{{if .createNotFound}}ErrNotFound = sqlx.ErrNotFound{{end}}
|
||||
)
|
||||
`
|
||||
Reference in New Issue
Block a user