github.com/DaAlbrecht/cf-cli@v0.0.0-20231128151943-1fe19bb400b9/util/batcher/batcher.go (about)

     1  package batcher
     2  
     3  import "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3"
     4  
     5  const BatchSize = 200
     6  
     7  type callback func(guids []string) (ccv3.Warnings, error)
     8  
     9  func RequestByGUID(guids []string, cb callback) (ccv3.Warnings, error) {
    10  	var allWarnings ccv3.Warnings
    11  
    12  	for len(guids) > 0 {
    13  		remaining := len(guids)
    14  		if remaining > BatchSize {
    15  			remaining = BatchSize
    16  		}
    17  
    18  		batch := guids[:remaining]
    19  		guids = guids[remaining:]
    20  
    21  		warnings, err := cb(batch)
    22  		allWarnings = append(allWarnings, warnings...)
    23  		if err != nil {
    24  			return allWarnings, err
    25  		}
    26  	}
    27  
    28  	return allWarnings, nil
    29  }