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"
|
2025-01-03 13:41:07 +00:00
|
|
|
queryprocessor "queryorchestration/internal/queryProcessor"
|
2024-12-24 17:13:48 +00:00
|
|
|
"queryorchestration/internal/result"
|
2024-12-24 12:47:40 +00:00
|
|
|
)
|
|
|
|
|
|
2025-01-06 15:31:39 +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")
|
|
|
|
|
}
|
|
|
|
|
}
|