package queryQueue import ( "context" "fmt" contextfull "queryorchestration/internal/contextFull" jsonextractor "queryorchestration/internal/jsonExtractor" "queryorchestration/internal/query" "queryorchestration/internal/result" ) func (q *Queue) setResult(ctx context.Context, qu query.QueryRow, resultValues *[]result.Value) error { 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 case query.TypeContextFull: return contextfull.New(), nil default: return nil, fmt.Errorf("attempting to process invalid query type") } }