bi/model/crud.go

38 lines
917 B
Go
Raw Permalink Normal View History

2022-01-26 16:40:50 +08:00
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) {
2022-04-10 23:22:35 +08:00
sqlA := db.
SqlBuilder.
Select(columns).
From(curd.TableName())
2022-01-26 16:40:50 +08:00
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
}