Files
query-orchestration/internal/queryProcessor/parse.go
T
Michael McGuinness 9f505dd94c controllersupdate
2025-01-07 13:55:21 +00:00

63 lines
1.5 KiB
Go

package queryprocessor
import (
"fmt"
"queryorchestration/internal/database"
"queryorchestration/internal/database/repository"
"github.com/google/uuid"
)
func ParseDBNullType(qType repository.NullQuerytype) (Type, error) {
if !qType.Valid {
return TypeJsonExtractor, fmt.Errorf("invalid database query type")
}
return ParseDBType(qType.Querytype)
}
func ParseDBType(qType repository.Querytype) (Type, error) {
switch qType {
case repository.QuerytypeJsonExtractor:
return TypeJsonExtractor, nil
case repository.QuerytypeContextFull:
return TypeContextFull, nil
default:
return TypeJsonExtractor, fmt.Errorf("invalid database query type")
}
}
func ToDBQueryType(t Type) (repository.NullQuerytype, error) {
var dbType repository.Querytype
switch t {
case TypeJsonExtractor:
dbType = repository.QuerytypeJsonExtractor
case TypeContextFull:
dbType = repository.QuerytypeContextFull
default:
return repository.NullQuerytype{}, fmt.Errorf("invalid database query type")
}
return repository.NullQuerytype{Querytype: dbType, Valid: true}, nil
}
func ParseDBCollectorQuery(q *repository.GetCollectorQueriesRow) (*Query, error) {
reqQueryIDs := make([]uuid.UUID, len(q.Requiredids))
for index, id := range q.Requiredids {
reqQueryIDs[index] = database.MustToUUID(id)
}
qType, err := ParseDBNullType(q.Type)
if err != nil {
return nil, err
}
return &Query{
ID: database.MustToUUID(q.Queryid),
Version: q.Queryversion.Int32,
Type: qType,
RequiredQueryIDs: reqQueryIDs,
}, nil
}