mirror of
https://github.com/ClusterCockpit/cc-backend
synced 2024-11-10 08:57:25 +01:00
New selection possibility when querying available metrics
This commit is contained in:
parent
b7186cb1cd
commit
1d8b9a96c7
@ -122,7 +122,7 @@ type ComplexityRoot struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Query struct {
|
Query struct {
|
||||||
JobAvailableMetricsByID func(childComplexity int, jobID string) int
|
JobAvailableMetricsByID func(childComplexity int, jobID string, selectMetrics []*string) int
|
||||||
JobByID func(childComplexity int, jobID string) int
|
JobByID func(childComplexity int, jobID string) int
|
||||||
JobDataByID func(childComplexity int, jobID string) int
|
JobDataByID func(childComplexity int, jobID string) int
|
||||||
Jobs func(childComplexity int, filter *model.JobFilterList, page *model.PageRequest, order *model.OrderByInput) int
|
Jobs func(childComplexity int, filter *model.JobFilterList, page *model.PageRequest, order *model.OrderByInput) int
|
||||||
@ -135,7 +135,7 @@ type QueryResolver interface {
|
|||||||
Jobs(ctx context.Context, filter *model.JobFilterList, page *model.PageRequest, order *model.OrderByInput) (*model.JobResultList, error)
|
Jobs(ctx context.Context, filter *model.JobFilterList, page *model.PageRequest, order *model.OrderByInput) (*model.JobResultList, error)
|
||||||
JobsStatistics(ctx context.Context, filter *model.JobFilterList) (*model.JobsStatistics, error)
|
JobsStatistics(ctx context.Context, filter *model.JobFilterList) (*model.JobsStatistics, error)
|
||||||
JobDataByID(ctx context.Context, jobID string) (*model.JobData, error)
|
JobDataByID(ctx context.Context, jobID string) (*model.JobData, error)
|
||||||
JobAvailableMetricsByID(ctx context.Context, jobID string) ([]*model.JobMetricWithName, error)
|
JobAvailableMetricsByID(ctx context.Context, jobID string, selectMetrics []*string) ([]*model.JobMetricWithName, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type executableSchema struct {
|
type executableSchema struct {
|
||||||
@ -520,7 +520,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in
|
|||||||
return 0, false
|
return 0, false
|
||||||
}
|
}
|
||||||
|
|
||||||
return e.complexity.Query.JobAvailableMetricsByID(childComplexity, args["jobId"].(string)), true
|
return e.complexity.Query.JobAvailableMetricsByID(childComplexity, args["jobId"].(string), args["selectMetrics"].([]*string)), true
|
||||||
|
|
||||||
case "Query.jobById":
|
case "Query.jobById":
|
||||||
if e.complexity.Query.JobByID == nil {
|
if e.complexity.Query.JobByID == nil {
|
||||||
@ -684,7 +684,7 @@ type Query {
|
|||||||
jobsStatistics(filter: JobFilterList): JobsStatistics!
|
jobsStatistics(filter: JobFilterList): JobsStatistics!
|
||||||
|
|
||||||
jobDataById(jobId: String!): JobData
|
jobDataById(jobId: String!): JobData
|
||||||
jobAvailableMetricsById(jobId: String!): [JobMetricWithName]!
|
jobAvailableMetricsById(jobId: String!, selectMetrics: [String]): [JobMetricWithName]!
|
||||||
}
|
}
|
||||||
|
|
||||||
input StartJobInput {
|
input StartJobInput {
|
||||||
@ -825,6 +825,15 @@ func (ec *executionContext) field_Query_jobAvailableMetricsById_args(ctx context
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
args["jobId"] = arg0
|
args["jobId"] = arg0
|
||||||
|
var arg1 []*string
|
||||||
|
if tmp, ok := rawArgs["selectMetrics"]; ok {
|
||||||
|
ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("selectMetrics"))
|
||||||
|
arg1, err = ec.unmarshalOString2ᚕᚖstring(ctx, tmp)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
args["selectMetrics"] = arg1
|
||||||
return args, nil
|
return args, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2847,7 +2856,7 @@ func (ec *executionContext) _Query_jobAvailableMetricsById(ctx context.Context,
|
|||||||
fc.Args = args
|
fc.Args = args
|
||||||
resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
|
resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
|
||||||
ctx = rctx // use context from middleware stack in children
|
ctx = rctx // use context from middleware stack in children
|
||||||
return ec.resolvers.Query().JobAvailableMetricsByID(rctx, args["jobId"].(string))
|
return ec.resolvers.Query().JobAvailableMetricsByID(rctx, args["jobId"].(string), args["selectMetrics"].([]*string))
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ec.Error(ctx, err)
|
ec.Error(ctx, err)
|
||||||
@ -5922,6 +5931,42 @@ func (ec *executionContext) marshalOString2string(ctx context.Context, sel ast.S
|
|||||||
return graphql.MarshalString(v)
|
return graphql.MarshalString(v)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (ec *executionContext) unmarshalOString2ᚕᚖstring(ctx context.Context, v interface{}) ([]*string, error) {
|
||||||
|
if v == nil {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
var vSlice []interface{}
|
||||||
|
if v != nil {
|
||||||
|
if tmp1, ok := v.([]interface{}); ok {
|
||||||
|
vSlice = tmp1
|
||||||
|
} else {
|
||||||
|
vSlice = []interface{}{v}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var err error
|
||||||
|
res := make([]*string, len(vSlice))
|
||||||
|
for i := range vSlice {
|
||||||
|
ctx := graphql.WithPathContext(ctx, graphql.NewPathWithIndex(i))
|
||||||
|
res[i], err = ec.unmarshalOString2ᚖstring(ctx, vSlice[i])
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ec *executionContext) marshalOString2ᚕᚖstring(ctx context.Context, sel ast.SelectionSet, v []*string) graphql.Marshaler {
|
||||||
|
if v == nil {
|
||||||
|
return graphql.Null
|
||||||
|
}
|
||||||
|
ret := make(graphql.Array, len(v))
|
||||||
|
for i := range v {
|
||||||
|
ret[i] = ec.marshalOString2ᚖstring(ctx, sel, v[i])
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
func (ec *executionContext) unmarshalOString2ᚖstring(ctx context.Context, v interface{}) (*string, error) {
|
func (ec *executionContext) unmarshalOString2ᚖstring(ctx context.Context, v interface{}) (*string, error) {
|
||||||
if v == nil {
|
if v == nil {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
|
@ -105,6 +105,15 @@ func readJobDataFile(jobId string) ([]byte, error) {
|
|||||||
return f, nil
|
return f, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func contains(s []*string, e string) bool {
|
||||||
|
for _, a := range s {
|
||||||
|
if a != nil && *a == e {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// Queries
|
// Queries
|
||||||
|
|
||||||
func (r *queryResolver) JobByID(
|
func (r *queryResolver) JobByID(
|
||||||
@ -282,7 +291,8 @@ func (r *queryResolver) JobDataByID(
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (r *queryResolver) JobAvailableMetricsByID(
|
func (r *queryResolver) JobAvailableMetricsByID(
|
||||||
ctx context.Context, jobId string) ([]*model.JobMetricWithName, error) {
|
ctx context.Context, jobId string,
|
||||||
|
selectMetrics []*string) ([]*model.JobMetricWithName, error) {
|
||||||
|
|
||||||
f, err := readJobDataFile(jobId)
|
f, err := readJobDataFile(jobId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -303,7 +313,9 @@ func (r *queryResolver) JobAvailableMetricsByID(
|
|||||||
}
|
}
|
||||||
|
|
||||||
for name, metric := range metricMap {
|
for name, metric := range metricMap {
|
||||||
list = append(list, &model.JobMetricWithName{ name, metric })
|
if selectMetrics == nil || contains(selectMetrics, name) {
|
||||||
|
list = append(list, &model.JobMetricWithName{ name, metric })
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return list, nil
|
return list, nil
|
||||||
|
@ -62,7 +62,7 @@ type Query {
|
|||||||
jobsStatistics(filter: JobFilterList): JobsStatistics!
|
jobsStatistics(filter: JobFilterList): JobsStatistics!
|
||||||
|
|
||||||
jobDataById(jobId: String!): JobData
|
jobDataById(jobId: String!): JobData
|
||||||
jobAvailableMetricsById(jobId: String!): [JobMetricWithName]!
|
jobAvailableMetricsById(jobId: String!, selectMetrics: [String]): [JobMetricWithName]!
|
||||||
}
|
}
|
||||||
|
|
||||||
input StartJobInput {
|
input StartJobInput {
|
||||||
|
Loading…
Reference in New Issue
Block a user