Files
query-orchestration/api/queryService/parse.go
T

100 lines
2.1 KiB
Go
Raw Normal View History

2025-01-15 19:45:51 +00:00
package queryservice
import (
"errors"
2025-03-05 12:05:46 +00:00
"queryorchestration/internal/client"
2025-01-15 19:45:51 +00:00
"queryorchestration/internal/query"
resultprocessor "queryorchestration/internal/query/result/processor"
2025-01-20 13:31:48 +00:00
"github.com/google/uuid"
2025-01-15 19:45:51 +00:00
)
func parseQueries(queries []*query.Query) ([]Query, error) {
outQueries := make([]Query, len(queries))
for index, query := range queries {
qt, err := parseQuery(query)
if err != nil {
return nil, err
}
outQueries[index] = *qt
}
return outQueries, nil
}
func parseQuery(query *query.Query) (*Query, error) {
if query.RequiredQueryIDs != nil && len(*query.RequiredQueryIDs) == 0 {
query.RequiredQueryIDs = nil
2025-01-15 19:45:51 +00:00
}
qt, err := parseQueryType(query.Type)
if err != nil {
return nil, err
}
q := &Query{
Id: query.ID,
2025-01-20 13:31:48 +00:00
Type: qt,
ActiveVersion: query.ActiveVersion,
LatestVersion: query.LatestVersion,
RequiredQueries: query.RequiredQueryIDs,
2025-01-20 13:31:48 +00:00
Config: query.Config,
2025-01-15 19:45:51 +00:00
}
return q, nil
}
func parseQueryType(qType resultprocessor.Type) (QueryType, error) {
2025-01-15 19:45:51 +00:00
switch qType {
case resultprocessor.TypeJsonExtractor:
2025-01-15 19:45:51 +00:00
return JSONEXTRACTOR, nil
case resultprocessor.TypeContextFull:
2025-01-15 19:45:51 +00:00
return CONTEXTFULL, nil
default:
return "", errors.New("invalid query type")
}
}
func parseSpecQueryType(qType QueryType) (resultprocessor.Type, error) {
2025-01-15 19:45:51 +00:00
switch qType {
case JSONEXTRACTOR:
return resultprocessor.TypeJsonExtractor, nil
2025-01-15 19:45:51 +00:00
case CONTEXTFULL:
return resultprocessor.TypeContextFull, nil
2025-01-15 19:45:51 +00:00
default:
return resultprocessor.Type(-1), errors.New("invalid query type")
2025-01-15 19:45:51 +00:00
}
}
2025-01-20 13:31:48 +00:00
func parseStringToUUIDArray(sids *[]string) (*[]uuid.UUID, error) {
var ids []uuid.UUID
if sids != nil {
ids = make([]uuid.UUID, len(*sids))
for index, id := range *sids {
parsedID, err := uuid.Parse(id)
if err != nil {
return nil, errors.New("invalid required id")
}
ids[index] = parsedID
}
return &ids, nil
}
return nil, nil
}
func parseClientStatus(status client.Status) ClientStatus {
switch status {
case client.IN_SYNC:
return INSYNC
case client.NOT_SYNCING:
return NOTSYNCING
}
return NOTSYNCED
}