286 lines
9.0 KiB
Smarty
286 lines
9.0 KiB
Smarty
|
|
||
|
func (m *default{{.upperStartCamelObject}}Model) Update(ctx context.Context,session sqlx.Session, {{if .containsIndexCache}}newData{{else}}data{{end}} *{{.upperStartCamelObject}}) (sql.Result,error) {
|
||
|
{{if .withCache}}{{if .containsIndexCache}}data, err:=m.FindOne(ctx, newData.{{.upperStartCamelPrimaryKey}})
|
||
|
if err!=nil{
|
||
|
return nil,err
|
||
|
}
|
||
|
{{end}}{{.keys}}
|
||
|
return m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||
|
query := fmt.Sprintf("update %s set %s where {{.originalPrimaryKey}} = {{if .postgreSql}}$1{{else}}?{{end}}", m.table, {{.lowerStartCamelObject}}RowsWithPlaceHolder)
|
||
|
if session != nil{
|
||
|
return session.ExecCtx(ctx,query, {{.expressionValues}})
|
||
|
}
|
||
|
return conn.ExecCtx(ctx, query, {{.expressionValues}})
|
||
|
}, {{.keyValues}}){{else}}query := fmt.Sprintf("update %s set %s where {{.originalPrimaryKey}} = {{if .postgreSql}}$1{{else}}?{{end}}", m.table, {{.lowerStartCamelObject}}RowsWithPlaceHolder)
|
||
|
if session != nil{
|
||
|
return session.ExecCtx(ctx,query, {{.expressionValues}})
|
||
|
}
|
||
|
return m.conn.ExecCtx(ctx, query, {{.expressionValues}}){{end}}
|
||
|
}
|
||
|
|
||
|
func (m *default{{.upperStartCamelObject}}Model) UpdateWithVersion(ctx context.Context,session sqlx.Session,{{if .containsIndexCache}}newData{{else}}data{{end}} *{{.upperStartCamelObject}}) error {
|
||
|
|
||
|
{{if .containsIndexCache}}
|
||
|
oldVersion := newData.Version
|
||
|
newData.Version += 1
|
||
|
{{else}}
|
||
|
oldVersion := data.Version
|
||
|
data.Version += 1
|
||
|
{{end}}
|
||
|
|
||
|
var sqlResult sql.Result
|
||
|
var err error
|
||
|
|
||
|
{{if .withCache}}{{if .containsIndexCache}}data, err:=m.FindOne(ctx, newData.{{.upperStartCamelPrimaryKey}})
|
||
|
if err!=nil{
|
||
|
return err
|
||
|
}
|
||
|
{{end}}{{.keys}}
|
||
|
sqlResult,err = m.ExecCtx(ctx,func(ctx context.Context,conn sqlx.SqlConn) (result sql.Result, err error) {
|
||
|
query := fmt.Sprintf("update %s set %s where {{.originalPrimaryKey}} = {{if .postgreSql}}$1{{else}}?{{end}} and version = ? ", m.table, {{.lowerStartCamelObject}}RowsWithPlaceHolder)
|
||
|
if session != nil{
|
||
|
return session.ExecCtx(ctx,query, {{.expressionValues}},oldVersion)
|
||
|
}
|
||
|
return conn.ExecCtx(ctx,query, {{.expressionValues}},oldVersion)
|
||
|
}, {{.keyValues}}){{else}}query := fmt.Sprintf("update %s set %s where {{.originalPrimaryKey}} = {{if .postgreSql}}$1{{else}}?{{end}} and version = ? ", m.table, {{.lowerStartCamelObject}}RowsWithPlaceHolder)
|
||
|
if session != nil{
|
||
|
sqlResult,err = session.ExecCtx(ctx,query, {{.expressionValues}},oldVersion)
|
||
|
}else{
|
||
|
sqlResult,err = m.conn.ExecCtx(ctx,query, {{.expressionValues}},oldVersion)
|
||
|
}
|
||
|
{{end}}
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
updateCount , err := sqlResult.RowsAffected()
|
||
|
if err != nil{
|
||
|
return err
|
||
|
}
|
||
|
if updateCount == 0 {
|
||
|
return ErrNoRowsUpdate
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (m *default{{.upperStartCamelObject}}Model) DeleteSoft(ctx context.Context,session sqlx.Session,data *{{.upperStartCamelObject}}) error {
|
||
|
data.DelState = globalkey.DelStateYes
|
||
|
data.DeleteTime = sql.NullTime{Time: time.Now(), Valid: true}
|
||
|
if err:= m.UpdateWithVersion(ctx,session, data);err!= nil{
|
||
|
return errors.Wrapf(errors.New("delete soft failed "),"{{.upperStartCamelObject}}Model delete err : %+v",err)
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (m *default{{.upperStartCamelObject}}Model) FindSum(ctx context.Context,builder squirrel.SelectBuilder, field string) (float64,error) {
|
||
|
|
||
|
if len(field) == 0 {
|
||
|
return 0, errors.Wrapf(errors.New("FindSum Least One Field"), "FindSum Least One Field")
|
||
|
}
|
||
|
|
||
|
builder = builder.Columns("IFNULL(SUM(" + field + "),0)")
|
||
|
|
||
|
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).ToSql()
|
||
|
if err != nil {
|
||
|
return 0, err
|
||
|
}
|
||
|
|
||
|
var resp float64
|
||
|
{{if .withCache}}err = m.QueryRowNoCacheCtx(ctx,&resp, query, values...){{else}}
|
||
|
err = m.conn.QueryRowCtx(ctx,&resp, query, values...)
|
||
|
{{end}}
|
||
|
switch err {
|
||
|
case nil:
|
||
|
return resp, nil
|
||
|
default:
|
||
|
return 0, err
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (m *default{{.upperStartCamelObject}}Model) FindCount(ctx context.Context, builder squirrel.SelectBuilder, field string) (int64,error) {
|
||
|
|
||
|
if len(field) == 0 {
|
||
|
return 0, errors.Wrapf(errors.New("FindCount Least One Field"), "FindCount Least One Field")
|
||
|
}
|
||
|
|
||
|
builder = builder.Columns("COUNT(" + field + ")")
|
||
|
|
||
|
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).ToSql()
|
||
|
if err != nil {
|
||
|
return 0, err
|
||
|
}
|
||
|
|
||
|
var resp int64
|
||
|
{{if .withCache}}err = m.QueryRowNoCacheCtx(ctx,&resp, query, values...){{else}}
|
||
|
err = m.conn.QueryRowCtx(ctx,&resp, query, values...)
|
||
|
{{end}}
|
||
|
switch err {
|
||
|
case nil:
|
||
|
return resp, nil
|
||
|
default:
|
||
|
return 0, err
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (m *default{{.upperStartCamelObject}}Model) FindAll(ctx context.Context,builder squirrel.SelectBuilder,orderBy string) ([]*{{.upperStartCamelObject}},error) {
|
||
|
|
||
|
builder = builder.Columns({{.lowerStartCamelObject}}Rows)
|
||
|
|
||
|
if orderBy == ""{
|
||
|
builder = builder.OrderBy("id DESC")
|
||
|
}else{
|
||
|
builder = builder.OrderBy(orderBy)
|
||
|
}
|
||
|
|
||
|
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).ToSql()
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
var resp []*{{.upperStartCamelObject}}
|
||
|
{{if .withCache}}err = m.QueryRowsNoCacheCtx(ctx,&resp, query, values...){{else}}
|
||
|
err = m.conn.QueryRowsCtx(ctx,&resp, query, values...)
|
||
|
{{end}}
|
||
|
switch err {
|
||
|
case nil:
|
||
|
return resp, nil
|
||
|
default:
|
||
|
return nil, err
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (m *default{{.upperStartCamelObject}}Model) FindPageListByPage(ctx context.Context,builder squirrel.SelectBuilder,page ,pageSize int64,orderBy string) ([]*{{.upperStartCamelObject}},error) {
|
||
|
|
||
|
builder = builder.Columns({{.lowerStartCamelObject}}Rows)
|
||
|
|
||
|
if orderBy == ""{
|
||
|
builder = builder.OrderBy("id DESC")
|
||
|
}else{
|
||
|
builder = builder.OrderBy(orderBy)
|
||
|
}
|
||
|
|
||
|
if page < 1{
|
||
|
page = 1
|
||
|
}
|
||
|
offset := (page - 1) * pageSize
|
||
|
|
||
|
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).Offset(uint64(offset)).Limit(uint64(pageSize)).ToSql()
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
var resp []*{{.upperStartCamelObject}}
|
||
|
{{if .withCache}}err = m.QueryRowsNoCacheCtx(ctx,&resp, query, values...){{else}}
|
||
|
err = m.conn.QueryRowsCtx(ctx,&resp, query, values...)
|
||
|
{{end}}
|
||
|
switch err {
|
||
|
case nil:
|
||
|
return resp, nil
|
||
|
default:
|
||
|
return nil, err
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
func (m *default{{.upperStartCamelObject}}Model) FindPageListByPageWithTotal(ctx context.Context,builder squirrel.SelectBuilder,page ,pageSize int64,orderBy string) ([]*{{.upperStartCamelObject}},int64,error) {
|
||
|
|
||
|
total, err := m.FindCount(ctx, builder, "id")
|
||
|
if err != nil {
|
||
|
return nil, 0, err
|
||
|
}
|
||
|
|
||
|
builder = builder.Columns({{.lowerStartCamelObject}}Rows)
|
||
|
|
||
|
if orderBy == ""{
|
||
|
builder = builder.OrderBy("id DESC")
|
||
|
}else{
|
||
|
builder = builder.OrderBy(orderBy)
|
||
|
}
|
||
|
|
||
|
if page < 1{
|
||
|
page = 1
|
||
|
}
|
||
|
offset := (page - 1) * pageSize
|
||
|
|
||
|
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).Offset(uint64(offset)).Limit(uint64(pageSize)).ToSql()
|
||
|
if err != nil {
|
||
|
return nil,total, err
|
||
|
}
|
||
|
|
||
|
var resp []*{{.upperStartCamelObject}}
|
||
|
{{if .withCache}}err = m.QueryRowsNoCacheCtx(ctx,&resp, query, values...){{else}}
|
||
|
err = m.conn.QueryRowsCtx(ctx,&resp, query, values...)
|
||
|
{{end}}
|
||
|
switch err {
|
||
|
case nil:
|
||
|
return resp,total, nil
|
||
|
default:
|
||
|
return nil,total, err
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (m *default{{.upperStartCamelObject}}Model) FindPageListByIdDESC(ctx context.Context,builder squirrel.SelectBuilder ,preMinId ,pageSize int64) ([]*{{.upperStartCamelObject}},error) {
|
||
|
|
||
|
builder = builder.Columns({{.lowerStartCamelObject}}Rows)
|
||
|
|
||
|
if preMinId > 0 {
|
||
|
builder = builder.Where(" id < ? " , preMinId)
|
||
|
}
|
||
|
|
||
|
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).OrderBy("id DESC").Limit(uint64(pageSize)).ToSql()
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
var resp []*{{.upperStartCamelObject}}
|
||
|
{{if .withCache}}err = m.QueryRowsNoCacheCtx(ctx,&resp, query, values...){{else}}
|
||
|
err = m.conn.QueryRowsCtx(ctx,&resp, query, values...)
|
||
|
{{end}}
|
||
|
switch err {
|
||
|
case nil:
|
||
|
return resp, nil
|
||
|
default:
|
||
|
return nil, err
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (m *default{{.upperStartCamelObject}}Model) FindPageListByIdASC(ctx context.Context,builder squirrel.SelectBuilder,preMaxId ,pageSize int64) ([]*{{.upperStartCamelObject}},error) {
|
||
|
|
||
|
builder = builder.Columns({{.lowerStartCamelObject}}Rows)
|
||
|
|
||
|
if preMaxId > 0 {
|
||
|
builder = builder.Where(" id > ? " , preMaxId)
|
||
|
}
|
||
|
|
||
|
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).OrderBy("id ASC").Limit(uint64(pageSize)).ToSql()
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
var resp []*{{.upperStartCamelObject}}
|
||
|
{{if .withCache}}err = m.QueryRowsNoCacheCtx(ctx,&resp, query, values...){{else}}
|
||
|
err = m.conn.QueryRowsCtx(ctx,&resp, query, values...)
|
||
|
{{end}}
|
||
|
switch err {
|
||
|
case nil:
|
||
|
return resp, nil
|
||
|
default:
|
||
|
return nil, err
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (m *default{{.upperStartCamelObject}}Model) Trans(ctx context.Context,fn func(ctx context.Context,session sqlx.Session) error) error {
|
||
|
{{if .withCache}}
|
||
|
return m.TransactCtx(ctx,func(ctx context.Context,session sqlx.Session) error {
|
||
|
return fn(ctx,session)
|
||
|
})
|
||
|
{{else}}
|
||
|
return m.conn.TransactCtx(ctx,func(ctx context.Context,session sqlx.Session) error {
|
||
|
return fn(ctx,session)
|
||
|
})
|
||
|
{{end}}
|
||
|
}
|
||
|
|
||
|
func(m *default{{.upperStartCamelObject}}Model) SelectBuilder() squirrel.SelectBuilder {
|
||
|
return squirrel.Select().From(m.table)
|
||
|
}
|