package query import ( "queryorchestration/internal/database" "queryorchestration/internal/database/repository" resultprocessor "queryorchestration/internal/query/result/processor" "github.com/google/uuid" ) func ParseQueryWithVersion(q *repository.GetQueryWithVersionRow) (*Query, error) { return ParseFullActiveQuery(&repository.Fullactivequery{ ID: q.ID, Type: q.Type, Activeversion: q.Activeversion, Latestversion: q.Latestversion, Config: q.Config, Requiredids: q.Requiredids, }) } func ParseQuery(q *Query) *resultprocessor.Query { return &resultprocessor.Query{ ID: q.ID, Type: q.Type, Version: q.ActiveVersion, RequiredQueryIDs: q.RequiredQueryIDs, Config: q.Config, } } func ParseFullActiveQuery(q *repository.Fullactivequery) (*Query, error) { var reqQueryIDs *[]uuid.UUID if len(q.Requiredids) > 0 { rQ, err := database.ToUUIDArray(q.Requiredids) if err != nil { return nil, err } reqQueryIDs = &rQ } qType, err := resultprocessor.ParseDBType(q.Type) if err != nil { return nil, err } var scfg *string if q.Config != nil && string(q.Config) != "" { s := string(q.Config) scfg = &s } return &Query{ ID: database.MustToUUID(q.ID), ActiveVersion: q.Activeversion, LatestVersion: q.Latestversion, Type: qType, RequiredQueryIDs: reqQueryIDs, Config: scfg, }, nil } func ParseFullActiveQueryArray(q []*repository.Fullactivequery) ([]*Query, error) { queries := make([]*Query, len(q)) for index, query := range q { q, err := ParseFullActiveQuery(query) if err != nil { return nil, err } queries[index] = q } return queries, nil }