Skip to content

Commit

Permalink
update usecase objects for version interface
Browse files Browse the repository at this point in the history
Signed-off-by: Loic Reyreaud <loic@weaviate.io>
  • Loading branch information
reyreaud-l committed Apr 15, 2024
1 parent 13be924 commit 5747ad3
Show file tree
Hide file tree
Showing 17 changed files with 37 additions and 35 deletions.
2 changes: 1 addition & 1 deletion adapters/handlers/rest/handlers_schema.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ func (s *schemaHandlers) updateClass(params schema.SchemaObjectsUpdateParams,
func (s *schemaHandlers) getClass(params schema.SchemaObjectsGetParams,
principal *models.Principal,
) middleware.Responder {
class, err := s.manager.GetConsistentClass(params.HTTPRequest.Context(), principal, params.ClassName, *params.Consistency)
class, _, err := s.manager.GetConsistentClass(params.HTTPRequest.Context(), principal, params.ClassName, *params.Consistency)
if err != nil {
s.metricRequestsTotal.logError(params.ClassName, err)
switch err.(type) {
Expand Down
4 changes: 2 additions & 2 deletions usecases/objects/add.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ func (m *Manager) addObjectToConnectorAndSchema(ctx context.Context, principal *
if object.Properties == nil {
object.Properties = map[string]interface{}{}
}
class, err := m.schemaManager.GetClass(ctx, principal, object.Class)
class, _, err := m.schemaManager.GetClass(ctx, principal, object.Class)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -147,7 +147,7 @@ func (m *Manager) validateSchema(ctx context.Context,
return nil, err
}

class, err := m.schemaManager.GetClass(ctx, principal, obj.Class)
class, _, err := m.schemaManager.GetClass(ctx, principal, obj.Class)
if err != nil {
return nil, err
}
Expand Down
2 changes: 1 addition & 1 deletion usecases/objects/auto_schema.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ func (m *autoSchemaManager) autoSchema(ctx context.Context, principal *models.Pr

object.Class = schema.UppercaseClassName(object.Class)

schemaClass, err := m.schemaManager.GetClass(ctx, principal, object.Class)
schemaClass, _, err := m.schemaManager.GetClass(ctx, principal, object.Class)
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion usecases/objects/batch_add.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ func (b *BatchManager) validateAndGetVector(ctx context.Context, principal *mode
class, ok := classPerClassName[obj.Class]
if !ok {
var err2 error
if class, err2 = b.schemaManager.GetClass(ctx, principal, obj.Class); err2 != nil {
if class, _, err2 = b.schemaManager.GetClass(ctx, principal, obj.Class); err2 != nil {
batchObjects[i].Err = err2
continue
}
Expand Down
2 changes: 1 addition & 1 deletion usecases/objects/batch_delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ func (b *BatchManager) validateBatchDelete(ctx context.Context, principal *model
}

// Validate schema given in body with the weaviate schema
class, err := b.schemaManager.GetClass(ctx, principal, match.Class)
class, _, err := b.schemaManager.GetClass(ctx, principal, match.Class)
if err != nil || class == nil {
return nil, fmt.Errorf("failed to get class: %s, with err=%v", match.Class, err)
}
Expand Down
6 changes: 3 additions & 3 deletions usecases/objects/batch_references_add.go
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ func (b *BatchManager) autodetectToClass(ctx context.Context,

target, ok := classPropTarget[className+propName]
if !ok {
class, err := b.schemaManager.GetClass(ctx, principal, ref.From.Class.String())
class, _, err := b.schemaManager.GetClass(ctx, principal, ref.From.Class.String())
if class == nil || err != nil {
batchReferences[i].Err = fmt.Errorf("class %s does not exist or there was an error getting it err=%v", className, err)
continue
Expand Down Expand Up @@ -239,7 +239,7 @@ func getReferenceClasses(ctx context.Context,
return
}

sourceClass, err = schemaManager.GetClass(ctx, principal, classFrom)
sourceClass, _, err = schemaManager.GetClass(ctx, principal, classFrom)
if err != nil {
err = fmt.Errorf("get source class %q: %w", classFrom, err)
return
Expand All @@ -263,7 +263,7 @@ func getReferenceClasses(ctx context.Context,
classTo = refProp.DataType[0]
}

targetClass, err = schemaManager.GetClass(ctx, principal, classTo)
targetClass, _, err = schemaManager.GetClass(ctx, principal, classTo)
if err != nil {
err = fmt.Errorf("get target class %q: %w", classTo, err)
return
Expand Down
12 changes: 6 additions & 6 deletions usecases/objects/fakes_for_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,26 +78,26 @@ func (f *fakeSchemaManager) ShardFromUUID(class string, uuid []byte) string { re

func (f *fakeSchemaManager) GetClass(ctx context.Context, principal *models.Principal,
name string,
) (*models.Class, error) {
) (*models.Class, uint64, error) {
if f.GetSchemaResponse.Objects == nil {
return nil, f.GetschemaErr
return nil, 0, f.GetschemaErr
}
for _, class := range f.GetSchemaResponse.Objects.Classes {
if class.Class == name {
return class, f.GetschemaErr
return class, 0, f.GetschemaErr
}
}
return nil, f.GetschemaErr
return nil, 0, f.GetschemaErr
}

func (f *fakeSchemaManager) GetConsistentClass(ctx context.Context, principal *models.Principal,
name string, consistency bool,
) (*models.Class, error) {
) (*models.Class, uint64, error) {
return f.GetClass(ctx, principal, name)
}

func (f *fakeSchemaManager) ReadOnlyClass(name string) *models.Class {
c, err := f.GetClass(context.TODO(), nil, name)
c, _, err := f.GetClass(context.TODO(), nil, name)
if err != nil {
return nil
}
Expand Down
6 changes: 4 additions & 2 deletions usecases/objects/get.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,13 +101,15 @@ func (m *Manager) GetObjectsClass(ctx context.Context, principal *models.Princip
return nil, err
}

return m.schemaManager.GetClass(ctx, principal, res.ClassName)
class, _, err := m.schemaManager.GetClass(ctx, principal, res.ClassName)
return class, err
}

func (m *Manager) GetObjectClassFromName(ctx context.Context, principal *models.Principal,
className string,
) (*models.Class, error) {
return m.schemaManager.GetClass(ctx, principal, className)
class, _, err := m.schemaManager.GetClass(ctx, principal, className)
return class, err
}

func (m *Manager) getObjectFromRepo(ctx context.Context, class string, id strfmt.UUID,
Expand Down
2 changes: 1 addition & 1 deletion usecases/objects/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ type schemaManager interface {
AddTenants(ctx context.Context, principal *models.Principal, class string, tenants []*models.Tenant) (uint64, error)
GetClass(ctx context.Context, principal *models.Principal, name string) (*models.Class, uint64, error)
// ReadOnlyClass return class model.
ReadOnlyClass(name string) (*models.Class, uint64)
ReadOnlyClass(name string) *models.Class
// AddClassProperty it is upsert operation. it adds properties to a class and updates
// existing properties if the merge bool passed true.
AddClassProperty(ctx context.Context, principal *models.Principal, class *models.Class, merge bool, prop ...*models.Property) (uint64, error)
Expand Down
2 changes: 1 addition & 1 deletion usecases/objects/merge.go
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ func (m *Manager) mergeObjectSchemaAndVectorize(ctx context.Context, className s
principal *models.Principal, prevVec, nextVec []float32,
prevVecs models.Vectors, nextVecs models.Vectors, id strfmt.UUID,
) (*models.Object, error) {
class, err := m.schemaManager.GetClass(ctx, principal, className)
class, _, err := m.schemaManager.GetClass(ctx, principal, className)
if err != nil {
return nil, err
}
Expand Down
2 changes: 1 addition & 1 deletion usecases/objects/references.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import (

func (m *Manager) autodetectToClass(ctx context.Context, principal *models.Principal, fromClass, fromProperty string, beaconRef *crossref.Ref) (strfmt.URI, strfmt.URI, bool, *Error) {
// autodetect to class from schema if not part of reference
class, err := m.schemaManager.GetClass(ctx, principal, fromClass)
class, _, err := m.schemaManager.GetClass(ctx, principal, fromClass)
if err != nil {
return "", "", false, &Error{"cannot get class", StatusInternalServerError, err}
}
Expand Down
2 changes: 1 addition & 1 deletion usecases/objects/references_add.go
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ func (req *AddReferenceInput) validate(
return nil, err
}

class, err := sm.GetClass(ctx, principal, req.Class)
class, _, err := sm.GetClass(ctx, principal, req.Class)
if err != nil {
return nil, err
}
Expand Down
2 changes: 1 addition & 1 deletion usecases/objects/references_delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ func (req *DeleteReferenceInput) validate(
return err
}

class, err := sm.GetClass(ctx, principal, req.Class)
class, _, err := sm.GetClass(ctx, principal, req.Class)
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion usecases/objects/references_update.go
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ func (req *PutReferenceInput) validate(
return nil, err
}

class, err := sm.GetClass(ctx, principal, req.Class)
class, _, err := sm.GetClass(ctx, principal, req.Class)
if err != nil {
return nil, err
}
Expand Down
2 changes: 1 addition & 1 deletion usecases/objects/update.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ func (m *Manager) updateObjectToConnectorAndSchema(ctx context.Context,
updates.CreationTimeUnix = obj.Created
updates.LastUpdateTimeUnix = m.timeSource.Now()

class, err := m.schemaManager.GetClass(ctx, principal, className)
class, _, err := m.schemaManager.GetClass(ctx, principal, className)
if err != nil {
return nil, err
}
Expand Down
2 changes: 1 addition & 1 deletion usecases/objects/vector.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ func (m *Manager) updateRefVector(ctx context.Context, principal *models.Princip

obj := parent.Object()

class, err := m.schemaManager.GetClass(ctx, principal, className)
class, _, err := m.schemaManager.GetClass(ctx, principal, className)
if err != nil {
return err
}
Expand Down
20 changes: 10 additions & 10 deletions usecases/schema/class.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,26 +33,26 @@ import (
shardingConfig "github.com/weaviate/weaviate/usecases/sharding/config"
)

func (h *Handler) GetClass(ctx context.Context, principal *models.Principal,
name string,
) (*models.Class, error) {
func (h *Handler) GetClass(ctx context.Context, principal *models.Principal, name string) (*models.Class, uint64, error) {
if err := h.Authorizer.Authorize(principal, "list", "schema/*"); err != nil {
return nil, err
return nil, 0, err
}
return h.metaReader.ReadOnlyClass(name), nil
cl, version := h.metaReader.ReadOnlyClassWithVersion(name, 0)
return cl, version, nil
}

func (m *Handler) GetConsistentClass(ctx context.Context, principal *models.Principal,
name string, consistency bool,
) (*models.Class, error) {
) (*models.Class, uint64, error) {
if err := m.Authorizer.Authorize(principal, "list", "schema/*"); err != nil {
return nil, err
return nil, 0, err
}
if consistency {
class, _, err := m.metaWriter.QueryReadOnlyClass(name)
return class, err
class, version, err := m.metaWriter.QueryReadOnlyClass(name)
return class, version, err
}
return m.metaReader.ReadOnlyClass(name), nil
class, version := m.metaReader.ReadOnlyClassWithVersion(name, 0)
return class, version, nil
}

// AddClass to the schema
Expand Down

0 comments on commit 5747ad3

Please sign in to comment.