github.com/weaviate/weaviate@v1.24.6/usecases/objects/batch_manager.go (about) 1 // _ _ 2 // __ _____ __ ___ ___ __ _| |_ ___ 3 // \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ 4 // \ V V / __/ (_| |\ V /| | (_| | || __/ 5 // \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| 6 // 7 // Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. 8 // 9 // CONTACT: hello@weaviate.io 10 // 11 12 package objects 13 14 import ( 15 "context" 16 17 "github.com/sirupsen/logrus" 18 "github.com/weaviate/weaviate/entities/additional" 19 "github.com/weaviate/weaviate/usecases/config" 20 "github.com/weaviate/weaviate/usecases/monitoring" 21 ) 22 23 // BatchManager manages kind changes in batch at a use-case level , i.e. 24 // agnostic of underlying databases or storage providers 25 type BatchManager struct { 26 config *config.WeaviateConfig 27 locks locks 28 schemaManager schemaManager 29 logger logrus.FieldLogger 30 authorizer authorizer 31 vectorRepo BatchVectorRepo 32 modulesProvider ModulesProvider 33 autoSchemaManager *autoSchemaManager 34 metrics *Metrics 35 } 36 37 type BatchVectorRepo interface { 38 VectorRepo 39 batchRepoNew 40 } 41 42 type batchRepoNew interface { 43 BatchPutObjects(ctx context.Context, objects BatchObjects, 44 repl *additional.ReplicationProperties) (BatchObjects, error) 45 BatchDeleteObjects(ctx context.Context, params BatchDeleteParams, 46 repl *additional.ReplicationProperties, tenant string) (BatchDeleteResult, error) 47 AddBatchReferences(ctx context.Context, references BatchReferences, 48 repl *additional.ReplicationProperties) (BatchReferences, error) 49 } 50 51 // NewBatchManager creates a new manager 52 func NewBatchManager(vectorRepo BatchVectorRepo, modulesProvider ModulesProvider, 53 locks locks, schemaManager schemaManager, config *config.WeaviateConfig, 54 logger logrus.FieldLogger, authorizer authorizer, 55 prom *monitoring.PrometheusMetrics, 56 ) *BatchManager { 57 return &BatchManager{ 58 config: config, 59 locks: locks, 60 schemaManager: schemaManager, 61 logger: logger, 62 vectorRepo: vectorRepo, 63 modulesProvider: modulesProvider, 64 authorizer: authorizer, 65 autoSchemaManager: newAutoSchemaManager(schemaManager, vectorRepo, config, logger), 66 metrics: NewMetrics(prom), 67 } 68 }