Files
query-orchestration/internal/query/result/get.go
T
Michael McGuinness 0ac5ff9e15 Merged in feature/testquery (pull request #39)
Test Query

* depstextandclean

* startedcleaningresult

* resulttidyup

* roundone

* cleaning

* unsyncedquery

* startedtestsandsimplification

* api

* querytests

* resultprocessortests

* unittests

* cleanup
2025-01-29 11:52:37 +00:00

49 lines
1.4 KiB
Go

package result
import (
"context"
"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
MinCleanVersion int32
MinTextVersion int32
}
func (s *Service) GetValueWithVersion(ctx context.Context, params *GetValueWithVersionParams) (resultprocessor.Value, error) {
res, err := s.db.Queries.GetResultValueWithVersion(ctx, &repository.GetResultValueWithVersionParams{
Queryid: database.MustToDBUUID(params.QueryID),
Queryversion: params.QueryVersion,
Documentid: database.MustToDBUUID(params.DocumentID),
Cleanversion: params.MinCleanVersion,
Textversion: params.MinTextVersion,
})
if err != nil {
return nil, err
}
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")
}
}