github.com/weaviate/weaviate@v1.24.6/modules/text2vec-contextionary/extensions/usecase.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 extensions 13 14 import ( 15 "bytes" 16 17 "github.com/pkg/errors" 18 "github.com/weaviate/weaviate/entities/moduletools" 19 ) 20 21 // UseCase handles all business logic regarding extensions 22 type UseCase struct { 23 storage moduletools.Storage 24 } 25 26 func NewUseCase(storage moduletools.Storage) *UseCase { 27 return &UseCase{ 28 storage: storage, 29 } 30 } 31 32 func (uc *UseCase) Store(concept string, value []byte) error { 33 err := uc.storage.Put([]byte(concept), value) 34 if err != nil { 35 return errors.Wrapf(err, "store concept %q", concept) 36 } 37 38 return nil 39 } 40 41 func (uc *UseCase) Load(concept string) ([]byte, error) { 42 val, err := uc.storage.Get([]byte(concept)) 43 if err != nil { 44 return nil, errors.Wrapf(err, "load concept %q", concept) 45 } 46 47 return val, nil 48 } 49 50 func (uc *UseCase) LoadAll() ([]byte, error) { 51 buf := bytes.NewBuffer(nil) 52 err := uc.storage.Scan(func(k, v []byte) (bool, error) { 53 _, err := buf.Write(v) 54 if err != nil { 55 return false, errors.Wrapf(err, "write concept %q", string(k)) 56 } 57 58 _, err = buf.Write([]byte("\n")) 59 if err != nil { 60 return false, errors.Wrap(err, "write newline separator") 61 } 62 63 return true, nil 64 }) 65 if err != nil { 66 return nil, errors.Wrap(err, "load all concepts") 67 } 68 69 return buf.Bytes(), nil 70 }