From 82af9840235096dc32890679a9f33a2266e0985a Mon Sep 17 00:00:00 2001 From: Jan Eitzinger Date: Fri, 6 Jun 2025 17:32:09 +0200 Subject: [PATCH] Implement part of Node query GraphQL callbacks --- internal/graph/schema.resolvers.go | 29 ++++++++++++++++++++--------- internal/repository/node.go | 2 ++ 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/internal/graph/schema.resolvers.go b/internal/graph/schema.resolvers.go index af167b4..1e02aba 100644 --- a/internal/graph/schema.resolvers.go +++ b/internal/graph/schema.resolvers.go @@ -360,12 +360,21 @@ func (r *queryResolver) AllocatedNodes(ctx context.Context, cluster string) ([]* // Node is the resolver for the node field. func (r *queryResolver) Node(ctx context.Context, id string) (*schema.Node, error) { - panic(fmt.Errorf("not implemented: Node - node")) + repo := repository.GetNodeRepository() + numericId, err := strconv.ParseInt(id, 10, 64) + if err != nil { + log.Warn("Error while parsing job id") + return nil, err + } + return repo.GetNode(numericId, false) } // Nodes is the resolver for the nodes field. func (r *queryResolver) Nodes(ctx context.Context, filter []*model.NodeFilter, order *model.OrderByInput) (*model.NodeStateResultList, error) { - panic(fmt.Errorf("not implemented: Nodes - nodes")) + repo := repository.GetNodeRepository() + nodes, err := repo.QueryNodes(ctx, filter, order) + count := len(nodes) + return &model.NodeStateResultList{Items: nodes, Count: &count}, err } // NodeStats is the resolver for the nodeStats field. @@ -814,10 +823,12 @@ func (r *Resolver) Query() generated.QueryResolver { return &queryResolver{r} } // SubCluster returns generated.SubClusterResolver implementation. func (r *Resolver) SubCluster() generated.SubClusterResolver { return &subClusterResolver{r} } -type clusterResolver struct{ *Resolver } -type jobResolver struct{ *Resolver } -type metricValueResolver struct{ *Resolver } -type mutationResolver struct{ *Resolver } -type nodeResolver struct{ *Resolver } -type queryResolver struct{ *Resolver } -type subClusterResolver struct{ *Resolver } +type ( + clusterResolver struct{ *Resolver } + jobResolver struct{ *Resolver } + metricValueResolver struct{ *Resolver } + mutationResolver struct{ *Resolver } + nodeResolver struct{ *Resolver } + queryResolver struct{ *Resolver } + subClusterResolver struct{ *Resolver } +) diff --git a/internal/repository/node.go b/internal/repository/node.go index f6425cf..f288acc 100644 --- a/internal/repository/node.go +++ b/internal/repository/node.go @@ -214,9 +214,11 @@ func (r *NodeRepository) DeleteNode(id int64) error { return nil } +// TODO: Implement order by func (r *NodeRepository) QueryNodes( ctx context.Context, filters []*model.NodeFilter, + order *model.OrderByInput, ) ([]*schema.Node, error) { query, qerr := SecurityCheck(ctx, sq.Select(jobColumns...).From("node")) if qerr != nil {