Merged in feature/update (pull request #27)

Query Update

* baselineupdate

* baseupdateplusmodelupdates

* passtests

* somemoresubmittesting

* testinnerfunctions

* readmeandinstall

* cleanerstartup

* readmeplusdeps

* tidyatrighttime

* validatetests

* normalizedontvalidate

* abitofzenormalizationcleanup

* addunitstestforhelperfuns

* normalizeactiveversiontestas
This commit is contained in:
Michael McGuinness
2025-01-20 13:31:48 +00:00
parent 897fd1c6dd
commit 518927c395
52 changed files with 1705 additions and 461 deletions
+45 -30
View File
@@ -6,6 +6,7 @@ import (
queryprocessor "queryorchestration/internal/query/processor"
"queryorchestration/internal/query/result"
"github.com/google/uuid"
"github.com/jackc/pgx/v5/pgtype"
)
@@ -27,43 +28,57 @@ func (q *Queue) Execute(ctx context.Context) error {
}
func (q *Queue) executeQuery(ctx context.Context, qu *queryprocessor.Query) error {
resultIDs := make([]pgtype.UUID, len(qu.RequiredQueryIDs))
for index, id := range qu.RequiredQueryIDs {
var queryVersion int32
for _, entry := range q.collectorQueries {
if entry.ID == id {
queryVersion = entry.Version
break
}
}
for _, entry := range q.results {
if entry.QueryID == id && entry.QueryVersion == queryVersion {
resultIDs[index] = database.MustToDBUUID(entry.ID)
break
}
}
}
values, err := q.db.Queries.ListResultValuesByID(ctx, resultIDs)
values, err := q.getRequiredResults(ctx, qu.RequiredQueryIDs)
if err != nil {
return err
}
cleanValues := make([]result.Value, len(values))
for index, r := range values {
cleanValue, err := q.getResultValue(r)
if err != nil {
return err
}
cleanValues[index] = cleanValue
}
err = q.setResult(ctx, qu, cleanValues)
err = q.setResult(ctx, qu, values)
if err != nil {
return err
}
return nil
}
func (q *Queue) getRequiredResults(ctx context.Context, requiredQueryIDs *[]uuid.UUID) (*[]result.Value, error) {
var values *[]result.Value
if requiredQueryIDs != nil {
resultIDs := make([]pgtype.UUID, len(*requiredQueryIDs))
for index, id := range *requiredQueryIDs {
var queryVersion int32
for _, entry := range q.collectorQueries {
if entry.ID == id {
queryVersion = entry.Version
break
}
}
for _, entry := range q.results {
if entry.QueryID == id && entry.QueryVersion == queryVersion {
resultIDs[index] = database.MustToDBUUID(entry.ID)
break
}
}
}
resultValues, err := q.db.Queries.ListResultValuesByID(ctx, resultIDs)
if err != nil {
return nil, err
}
rValues := make([]result.Value, len(resultValues))
for index, r := range resultValues {
cleanValue, err := q.getResultValue(r)
if err != nil {
return nil, err
}
rValues[index] = cleanValue
}
values = &rValues
}
return values, nil
}