Files
query-orchestration/internal/query/service.go
T
2024-12-20 17:54:05 +00:00

70 lines
1.3 KiB
Go

package query
import (
"context"
"gotemplate/internal/collector"
"gotemplate/internal/database/repository"
"github.com/google/uuid"
)
type QueryType int
const (
QueryTypeJsonExtractor = iota
)
type Query struct {
ID uuid.UUID
Type QueryType
RequiredQueryID uuid.UUID
Version int32
}
type Result struct {
ID uuid.UUID
QueryID uuid.UUID
QueryVersion int32
}
type ResultValue struct {
ID uuid.UUID
QueryID uuid.UUID
Value string
}
type Queue struct {
unsyncedQueue *[]Query
collectorQueries *[]Query
results *[]Result
collector *collector.Collector
db *repository.Queries
cleanVersion int32
textVersion int32
documentId uuid.UUID
}
func NewQueue(ctx context.Context, db *repository.Queries, coll *collector.Collector, results *[]Result, docId uuid.UUID, cleanVersion int32, textVersion int32) (*Queue, error) {
queue := Queue{
db: db,
results: results,
collector: coll,
documentId: docId,
cleanVersion: cleanVersion,
textVersion: textVersion,
}
err := queue.getCollectorQueries(ctx)
if err != nil {
return nil, err
}
queue.getUnsyncedQueries()
return &queue, nil
}
func (q *Queue) GetQueue() []Query {
return *q.unsyncedQueue
}