diff options
| author | Stefan Majewsky <majewsky@gmx.net> | 2018-04-30 13:47:38 +0200 |
|---|---|---|
| committer | Stefan Majewsky <majewsky@gmx.net> | 2018-04-30 13:47:38 +0200 |
| commit | b698287d0655420713bf6edfbc8de53da7c5a236 (patch) | |
| tree | c352afca8cb528f552a3d909420ccb3c4e89603c /largeobject.go | |
| parent | 0df55a731aa3330f82d22b010a7a2a4d66521972 (diff) | |
| download | go-schwift-b698287d0655420713bf6edfbc8de53da7c5a236.tar.gz | |
add DeleteOptions to Object.Delete()
Diffstat (limited to 'largeobject.go')
| -rw-r--r-- | largeobject.go | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/largeobject.go b/largeobject.go index 493671d..4175a70 100644 --- a/largeobject.go +++ b/largeobject.go @@ -349,11 +349,7 @@ func (lo *LargeObject) Open(mode LargeObjectOpenMode) (io.WriteCloser, error) { if mode&OpenAppend == 0 { if mode&OpenKeepSegments == 0 { - segmentObjects := make([]*Object, len(lo.segments)) - for idx, segment := range lo.segments { - segmentObjects[idx] = segment.Object - } - _, _, err := lo.Object.c.a.BulkDelete(segmentObjects, nil, nil) + _, _, err := lo.Object.c.a.BulkDelete(lo.segmentObjects(), nil, nil) if err != nil { return nil, err } @@ -371,6 +367,23 @@ func (lo *LargeObject) Segments() ([]SegmentInfo, error) { return lo.segments, nil } +func (lo *LargeObject) segmentObjects() []*Object { + seen := make(map[string]bool) + result := make([]*Object, 0, len(lo.segments)) + for _, segment := range lo.segments { + if segment.Object == nil { //can happen because of data segments + continue + } + fullName := segment.Object.FullName() + if !seen[fullName] { + result = append(result, segment.Object) + } + seen[fullName] = true + } + + return result +} + //NextSegmentObject suggests where to upload the next segment. // //WARNING: This is a low-level function. Most callers will want to use the |
