Spaces:
Running
Running
// _ _ | |
// __ _____ __ ___ ___ __ _| |_ ___ | |
// \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ | |
// \ V V / __/ (_| |\ V /| | (_| | || __/ | |
// \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| | |
// | |
// Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. | |
// | |
// CONTACT: [email protected] | |
// | |
package extensions | |
import ( | |
"bytes" | |
"github.com/pkg/errors" | |
"github.com/weaviate/weaviate/entities/moduletools" | |
) | |
// UseCase handles all business logic regarding extensions | |
type UseCase struct { | |
storage moduletools.Storage | |
} | |
func NewUseCase(storage moduletools.Storage) *UseCase { | |
return &UseCase{ | |
storage: storage, | |
} | |
} | |
func (uc *UseCase) Store(concept string, value []byte) error { | |
err := uc.storage.Put([]byte(concept), value) | |
if err != nil { | |
return errors.Wrapf(err, "store concept %q", concept) | |
} | |
return nil | |
} | |
func (uc *UseCase) Load(concept string) ([]byte, error) { | |
val, err := uc.storage.Get([]byte(concept)) | |
if err != nil { | |
return nil, errors.Wrapf(err, "load concept %q", concept) | |
} | |
return val, nil | |
} | |
func (uc *UseCase) LoadAll() ([]byte, error) { | |
buf := bytes.NewBuffer(nil) | |
err := uc.storage.Scan(func(k, v []byte) (bool, error) { | |
_, err := buf.Write(v) | |
if err != nil { | |
return false, errors.Wrapf(err, "write concept %q", string(k)) | |
} | |
_, err = buf.Write([]byte("\n")) | |
if err != nil { | |
return false, errors.Wrap(err, "write newline separator") | |
} | |
return true, nil | |
}) | |
if err != nil { | |
return nil, errors.Wrap(err, "load all concepts") | |
} | |
return buf.Bytes(), nil | |
} | |