30 lines
833 B
Go
30 lines
833 B
Go
|
package infrastructure
|
|||
|
|
|||
|
import (
|
|||
|
"github.com/Superdanda/hade/framework"
|
|||
|
"gorm.io/gorm"
|
|||
|
)
|
|||
|
|
|||
|
func NewOrmRepositoryAndRegister(container framework.Container) {
|
|||
|
NewOrmFlowRepositoryImplAndRegister(container)
|
|||
|
NewOrmInstanceRepositoryImplAndRegister(container)
|
|||
|
}
|
|||
|
|
|||
|
// ListFlows 泛型分页查询方法
|
|||
|
func ListFlows[T any](db *gorm.DB, pageNum, pageSize int, filter *T) ([]*T, int64, error) {
|
|||
|
var results []*T
|
|||
|
var totalRecords int64
|
|||
|
// 计算偏移量(OFFSET)
|
|||
|
offset := (pageNum - 1) * pageSize
|
|||
|
// 查询总记录数
|
|||
|
if err := db.Where(filter).Count(&totalRecords).Error; err != nil {
|
|||
|
return nil, 0, err
|
|||
|
}
|
|||
|
// 查询分页数据
|
|||
|
if err := db.Where(filter).Offset(offset).Limit(pageSize).Find(&results).Error; err != nil {
|
|||
|
return nil, 0, err
|
|||
|
}
|
|||
|
// 返回查询结果和总记录数
|
|||
|
return results, totalRecords, nil
|
|||
|
}
|