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  }