15851: Return items [], not null, in empty set responses.
[arvados.git] / lib / controller / federation / generated.go
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 package federation
6
7 import (
8         "context"
9         "sort"
10         "sync"
11
12         "git.curoverse.com/arvados.git/sdk/go/arvados"
13 )
14
15 //
16 // -- this file is auto-generated -- do not edit -- edit list.go and run "go generate" instead --
17 //
18
19 func (conn *Conn) ContainerList(ctx context.Context, options arvados.ListOptions) (arvados.ContainerList, error) {
20         var mtx sync.Mutex
21         var merged arvados.ContainerList
22         err := conn.splitListRequest(ctx, options, func(ctx context.Context, _ string, backend arvados.API, options arvados.ListOptions) ([]string, error) {
23                 cl, err := backend.ContainerList(ctx, options)
24                 if err != nil {
25                         return nil, err
26                 }
27                 mtx.Lock()
28                 defer mtx.Unlock()
29                 if len(merged.Items) == 0 {
30                         merged = cl
31                 } else {
32                         merged.Items = append(merged.Items, cl.Items...)
33                 }
34                 uuids := make([]string, 0, len(cl.Items))
35                 for _, item := range cl.Items {
36                         uuids = append(uuids, item.UUID)
37                 }
38                 return uuids, nil
39         })
40         sort.Slice(merged.Items, func(i, j int) bool { return merged.Items[i].UUID < merged.Items[j].UUID })
41         if merged.Items == nil {
42                 // Return empty results as [], not null
43                 // (https://github.com/golang/go/issues/27589 might be
44                 // a better solution in the future)
45                 merged.Items = []arvados.Container{}
46         }
47         return merged, err
48 }
49
50 func (conn *Conn) SpecimenList(ctx context.Context, options arvados.ListOptions) (arvados.SpecimenList, error) {
51         var mtx sync.Mutex
52         var merged arvados.SpecimenList
53         err := conn.splitListRequest(ctx, options, func(ctx context.Context, _ string, backend arvados.API, options arvados.ListOptions) ([]string, error) {
54                 cl, err := backend.SpecimenList(ctx, options)
55                 if err != nil {
56                         return nil, err
57                 }
58                 mtx.Lock()
59                 defer mtx.Unlock()
60                 if len(merged.Items) == 0 {
61                         merged = cl
62                 } else {
63                         merged.Items = append(merged.Items, cl.Items...)
64                 }
65                 uuids := make([]string, 0, len(cl.Items))
66                 for _, item := range cl.Items {
67                         uuids = append(uuids, item.UUID)
68                 }
69                 return uuids, nil
70         })
71         sort.Slice(merged.Items, func(i, j int) bool { return merged.Items[i].UUID < merged.Items[j].UUID })
72         if merged.Items == nil {
73                 // Return empty results as [], not null
74                 // (https://github.com/golang/go/issues/27589 might be
75                 // a better solution in the future)
76                 merged.Items = []arvados.Specimen{}
77         }
78         return merged, err
79 }