func()

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
}