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

54 lines
1.2 KiB
Go
Raw Normal View History

2024-12-24 12:47:40 +00:00
package queryQueue
import (
"context"
"fmt"
2024-12-24 17:13:48 +00:00
contextfull "queryorchestration/internal/contextFull"
jsonextractor "queryorchestration/internal/jsonExtractor"
"queryorchestration/internal/query"
"queryorchestration/internal/result"
2024-12-24 12:47:40 +00:00
)
2025-01-02 16:07:35 +00:00
func (q *Queue) setResult(ctx context.Context, qu query.QueryRow, 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
}
id, err := result.Store(ctx, q.db, &result.ResultStore{
QueryID: qu.ID,
DocumentID: q.documentId,
Value: value,
CleanVersion: q.cleanVersion,
TextVersion: q.textVersion,
QueryVersion: qu.Version,
})
if err != nil {
return err
}
*q.results = append(*q.results, result.Result{
ID: id,
QueryID: qu.ID,
QueryVersion: qu.Version,
})
return nil
}
func (q *Queue) getProcessor(queryType query.Type) (query.Processor, error) {
switch queryType {
case query.TypeJsonExtractor:
return jsonextractor.New(q.db), nil
2024-12-24 17:13:48 +00:00
case query.TypeContextFull:
return contextfull.New(), nil
2024-12-24 12:47:40 +00:00
default:
return nil, fmt.Errorf("attempting to process invalid query type")
}
}