github.com/weaviate/weaviate@v1.24.6/entities/schema/accessors.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 schema 13 14 import ( 15 "github.com/weaviate/weaviate/entities/models" 16 ) 17 18 func (s *Schema) GetClass(className ClassName) *models.Class { 19 class, err := GetClassByName(s.Objects, string(className)) 20 if err != nil { 21 return nil 22 } 23 24 return class 25 } 26 27 // FindClassByName will find either a Thing or Class by name. 28 func (s *Schema) FindClassByName(className ClassName) *models.Class { 29 semSchemaClass, err := GetClassByName(s.Objects, string(className)) 30 if err == nil { 31 return semSchemaClass 32 } 33 34 return nil 35 } 36 37 // func (s *Schema) GetKindOfClass(className ClassName) (kind.Kind, bool) { 38 // _, err := GetClassByName(s.Objects, string(className)) 39 // if err == nil { 40 // return kind.Object, true 41 // } 42 43 // return "", false 44 // } 45 46 func (s *Schema) GetProperty(className ClassName, propName PropertyName) (*models.Property, error) { 47 semSchemaClass, err := GetClassByName(s.Objects, string(className)) 48 if err != nil { 49 return nil, err 50 } 51 52 semProp, err := GetPropertyByName(semSchemaClass, string(propName)) 53 if err != nil { 54 return nil, err 55 } 56 57 return semProp, nil 58 } 59 60 func (s *Schema) GetPropsOfType(propType string) []ClassAndProperty { 61 return extractAllOfPropType(s.Objects.Classes, propType) 62 } 63 64 func extractAllOfPropType(classes []*models.Class, propType string) []ClassAndProperty { 65 var result []ClassAndProperty 66 for _, class := range classes { 67 for _, prop := range class.Properties { 68 if prop.DataType[0] == propType { 69 result = append(result, ClassAndProperty{ 70 ClassName: ClassName(class.Class), 71 PropertyName: PropertyName(prop.Name), 72 }) 73 } 74 } 75 } 76 77 return result 78 }