bi/model/crud.go
1340691923@qq.com ebbf4120bf 第一次提交
2022-01-26 16:40:50 +08:00

35 lines
908 B
Go

package model
import (
"github.com/1340691923/xwl_bi/engine/db"
)
type Curd interface {
ProcessSqlWhere(sqlA db.SelectBuilder) db.SelectBuilder
TableName() string
ProcessSqlInsert(sqlA db.InsertBuilder) db.InsertBuilder
ProcessSqlUpdate(id int, sqlA db.UpdateBuilder) db.UpdateBuilder
}
func SearchList(curd Curd, page, limit int, columns string, list interface{}) (err error) {
sqlA := db.SqlBuilder.Select(columns).From(curd.TableName())
sqlA = curd.ProcessSqlWhere(sqlA)
sql, args, err := sqlA.
Limit(uint64(limit)).
Offset(db.CreatePage(uint64(page), uint64(limit))).
OrderBy("id desc").
ToSql()
err = db.Sqlx.Select(list, sql, args...)
return
}
func Count(curd Curd) (count int, err error) {
sqlA := db.SqlBuilder.
Select("count(*)").
From(curd.TableName())
sqlA = curd.ProcessSqlWhere(sqlA)
sql, args, err := sqlA.ToSql()
err = db.Sqlx.Get(&count, sql, args...)
return
}