64 lines
1.2 KiB
Go
64 lines
1.2 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 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
|
|
}
|