Files
query-orchestration/internal/query/queue/result.go
T

74 lines
1.9 KiB
Go
Raw Normal View History

2025-01-07 16:30:45 +00:00
package queryqueue
2024-12-24 12:47:40 +00:00
import (
"context"
"fmt"
"queryorchestration/internal/database"
"queryorchestration/internal/database/repository"
queryprocessor "queryorchestration/internal/query/processor"
"queryorchestration/internal/query/result"
contextfull "queryorchestration/internal/query/types/contextFull"
jsonextractor "queryorchestration/internal/query/types/jsonExtractor"
2024-12-24 12:47:40 +00:00
)
2025-01-20 13:31:48 +00:00
func (q *Queue) setResult(ctx context.Context, qu *queryprocessor.Query, resultValues *[]result.Value) error {
2024-12-24 12:47:40 +00:00
processor, err := q.getProcessor(qu.Type)
if err != nil {
return err
}
value, err := processor.Process(ctx, qu, resultValues)
if err != nil {
return err
}
2025-01-06 12:26:28 +00:00
id, err := result.Store(ctx, q.db.Queries, &result.ResultStore{
2024-12-24 12:47:40 +00:00
QueryID: qu.ID,
DocumentID: q.documentId,
Value: value,
CleanVersion: q.cleanVersion,
TextVersion: q.textVersion,
QueryVersion: qu.Version,
})
if err != nil {
return err
}
2025-01-06 15:31:39 +00:00
q.results = append(q.results, &result.Result{
2024-12-24 12:47:40 +00:00
ID: id,
QueryID: qu.ID,
QueryVersion: qu.Version,
})
return nil
}
2025-01-03 13:41:07 +00:00
func (q *Queue) getProcessor(queryType queryprocessor.Type) (queryprocessor.Processor, error) {
2024-12-24 12:47:40 +00:00
switch queryType {
2025-01-03 13:41:07 +00:00
case queryprocessor.TypeJsonExtractor:
return jsonextractor.NewExtractor(q.db), nil
case queryprocessor.TypeContextFull:
return contextfull.NewExtractor(), nil
2024-12-24 12:47:40 +00:00
default:
return nil, fmt.Errorf("attempting to process invalid query type")
}
}
func (q *Queue) getResultValue(res *repository.ListResultValuesByIDRow) (result.Value, error) {
var queryType queryprocessor.Type
for _, qu := range q.collectorQueries {
if qu.ID == database.MustToUUID(res.Queryid) {
queryType = qu.Type
}
}
switch queryType {
case queryprocessor.TypeJsonExtractor:
return jsonextractor.NewResult(res.Value), nil
case queryprocessor.TypeContextFull:
return contextfull.NewResult(res.Value), nil
default:
return nil, fmt.Errorf("attempting to process invalid query type")
}
}