in internal/dal/workflow.go [72:106]
func (w *workflowDALImpl) SelectList(ctx context.Context, param *model.QueryParam) ([]model.Workflow, int, error) {
var res []model.Workflow
var condition = model.Workflow{WorkflowID: param.WorkflowID, Status: param.Status}
db := workflowDB.WithContext(ctx).Where("1=1")
if len(condition.WorkflowID) > 0 {
// Suitable for small amount of data
// when the amount of data is too large, you need to use search engines for optimization
db = db.Where("workflow_id LIKE ?", fmt.Sprintf("%%%s%%", condition.WorkflowID))
}
if condition.Status == 0 {
condition.Status = constants.NormalStatus
}
db = db.Where("status = ?", condition.Status)
if param.Size > maxSize {
param.Size = maxSize
}
if param.Page == 0 {
param.Page = 1
}
var count int64
db = db.Limit(param.Size).Offset(param.Size * (param.Page - 1)).Order("update_time DESC")
if err := db.Find(&res).Limit(-1).Offset(-1).Count(&count).Error; err != nil {
if err == gorm.ErrRecordNotFound {
return nil, 0, nil
}
return nil, 0, err
}
if count == 0 {
return res, int(count), nil
}
if err := w.fillInstanceCount(res); err != nil {
return res, int(count), err
}
return res, int(count), nil
}