go.temporal.io/server@v1.23.0/common/persistence/visibility/store/elasticsearch/client/bulk_service_v7.go (about) 1 // The MIT License 2 // 3 // Copyright (c) 2020 Temporal Technologies Inc. All rights reserved. 4 // 5 // Copyright (c) 2020 Uber Technologies, Inc. 6 // 7 // Permission is hereby granted, free of charge, to any person obtaining a copy 8 // of this software and associated documentation files (the "Software"), to deal 9 // in the Software without restriction, including without limitation the rights 10 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 // copies of the Software, and to permit persons to whom the Software is 12 // furnished to do so, subject to the following conditions: 13 // 14 // The above copyright notice and this permission notice shall be included in 15 // all copies or substantial portions of the Software. 16 // 17 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 // THE SOFTWARE. 24 25 package client 26 27 import ( 28 "context" 29 30 "github.com/olivere/elastic/v7" 31 ) 32 33 type ( 34 bulkServiceImpl struct { 35 esBulkService *elastic.BulkService 36 } 37 ) 38 39 func newBulkService(esBulkService *elastic.BulkService) *bulkServiceImpl { 40 return &bulkServiceImpl{ 41 esBulkService: esBulkService, 42 } 43 } 44 45 func (b *bulkServiceImpl) Do(ctx context.Context) error { 46 _, err := b.esBulkService.Do(ctx) 47 return err 48 } 49 50 func (b *bulkServiceImpl) NumberOfActions() int { 51 return b.esBulkService.NumberOfActions() 52 } 53 54 func (b *bulkServiceImpl) Add(request *BulkableRequest) { 55 switch request.RequestType { 56 case BulkableRequestTypeIndex: 57 bulkDeleteRequest := elastic.NewBulkIndexRequest(). 58 Index(request.Index). 59 Id(request.ID). 60 VersionType(versionTypeExternal). 61 Version(request.Version). 62 Doc(request.Doc) 63 b.esBulkService.Add(bulkDeleteRequest) 64 case BulkableRequestTypeDelete: 65 bulkDeleteRequest := elastic.NewBulkDeleteRequest(). 66 Index(request.Index). 67 Id(request.ID). 68 VersionType(versionTypeExternal). 69 Version(request.Version) 70 b.esBulkService.Add(bulkDeleteRequest) 71 } 72 }