package query import ( "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{ Queryid: q.Queryid, Querytype: q.Querytype, 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) { qType, err := resultprocessor.ParseDBType(q.Querytype) if err != nil { return nil, err } var scfg *string if q.Config != nil && string(q.Config) != "" { s := string(q.Config) scfg = &s } var reqIds *[]uuid.UUID if len(q.Requiredids) > 0 { reqIds = &q.Requiredids } return &Query{ ID: q.Queryid, ActiveVersion: q.Activeversion, LatestVersion: q.Latestversion, Type: qType, RequiredQueryIDs: reqIds, 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 }