Files
query-orchestration/internal/query/result/get.go
T
Michael McGuinness 0815cb35fb Merged in feature/lint (pull request #87)
Basic Lint Checks

* basic
2025-03-05 12:05:46 +00:00

51 lines
1.4 KiB
Go

package result
import (
"context"
"errors"
"fmt"
"queryorchestration/internal/database"
"queryorchestration/internal/database/repository"
resultprocessor "queryorchestration/internal/query/result/processor"
contextfull "queryorchestration/internal/query/types/contextFull"
jsonextractor "queryorchestration/internal/query/types/jsonExtractor"
"github.com/google/uuid"
)
type GetValueWithVersionParams struct {
Type resultprocessor.Type
QueryID uuid.UUID
DocumentID uuid.UUID
QueryVersion int32
}
func (s *Service) GetValueWithVersion(ctx context.Context, params *GetValueWithVersionParams) (resultprocessor.Value, error) {
res, err := s.cfg.GetDBQueries().GetResultValueWithVersion(ctx, &repository.GetResultValueWithVersionParams{
Queryid: database.MustToDBUUID(params.QueryID),
Queryversion: &params.QueryVersion,
Documentid: database.MustToDBUUID(params.DocumentID),
})
if err != nil {
return nil, err
}
if res.Value == nil {
return nil, errors.New("no value found")
}
return getValueByType(params.Type, *res.Value)
}
func getValueByType(t resultprocessor.Type, value string) (resultprocessor.Value, error) {
switch t {
case resultprocessor.TypeJsonExtractor:
return jsonextractor.NewResult(value), nil
case resultprocessor.TypeContextFull:
return contextfull.NewResult(value), nil
default:
return nil, fmt.Errorf("attempting to process invalid query type")
}
}