From e12ac175199cdb40cf9be4970a29c2a2bfb54f34 Mon Sep 17 00:00:00 2001 From: Jonas Wagner Date: Fri, 17 May 2024 09:39:40 +0200 Subject: [PATCH] Add Option for Uploading files in Reverse Order --- cmd/upload.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/cmd/upload.go b/cmd/upload.go index 49c6ccd..9f8a0e2 100644 --- a/cmd/upload.go +++ b/cmd/upload.go @@ -36,6 +36,8 @@ import ( "time" ) +var reverse bool + const MultiBundleFileBundleDelimiter = byte('\n') func NewFileChunkReader(file *os.File, offsetBytes int64, limitBytes int64) (*io.LimitedReader, error) { @@ -417,7 +419,14 @@ func newUploadBundleConsumer(client *fhir.Client, uploadResults chan<- bundleUpl func (consumer *uploadBundleConsumer) uploadBundles(uploadBundles []bundle, concurrency int, wg *sync.WaitGroup) { limiter := make(chan bool, concurrency) - for _, queueItem := range uploadBundles { + for i := 0; i < len(uploadBundles); i++ { + var queueItem bundle + if reverse { + queueItem = uploadBundles[len(uploadBundles)-(i+1)] + } else { + queueItem = uploadBundles[i] + } + limiter <- true wg.Add(1) go func(b bundle, limiter <-chan bool, wg *sync.WaitGroup) { @@ -629,6 +638,7 @@ func init() { uploadCmd.Flags().StringVar(&server, "server", "", "the base URL of the server to use") uploadCmd.Flags().IntVarP(&concurrency, "concurrency", "c", 2, "number of parallel uploads") + uploadCmd.Flags().BoolVarP(&reverse, "reverse", "r", false, "upload data in reverse order") _ = uploadCmd.MarkFlagRequired("server") }