Skip to content

Commit

Permalink
Tweaked the code better
Browse files Browse the repository at this point in the history
Signed-off-by: naveensrinivasan <[email protected]>
  • Loading branch information
naveensrinivasan committed Nov 26, 2024
1 parent 58db48d commit 7f7bc7c
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 30 deletions.
50 changes: 25 additions & 25 deletions api/v1/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,41 +48,41 @@ type Query struct {
func (s *Service) GetNode(ctx context.Context, req *connect.Request[service.GetNodeRequest]) (*connect.Response[service.GetNodeResponse], error) {
node, err := s.storage.GetNode(req.Msg.Id)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to get node by id: %w", err)

Check warning on line 51 in api/v1/service.go

View check run for this annotation

Codecov / codecov/patch

api/v1/service.go#L51

Added line #L51 was not covered by tests
}
serviceNode, err := NodeToServiceNode(node)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to convert node to service node: %w", err)

Check warning on line 55 in api/v1/service.go

View check run for this annotation

Codecov / codecov/patch

api/v1/service.go#L55

Added line #L55 was not covered by tests
}
return connect.NewResponse(&service.GetNodeResponse{Node: serviceNode}), nil
}

func (s *Service) GetNodeByName(ctx context.Context, req *connect.Request[service.GetNodeByNameRequest]) (*connect.Response[service.GetNodeByNameResponse], error) {
id, err := s.storage.NameToID(req.Msg.Name)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to get node by name: %w", err)
}
node, err := s.storage.GetNode(id)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to get node by id: %w", err)

Check warning on line 67 in api/v1/service.go

View check run for this annotation

Codecov / codecov/patch

api/v1/service.go#L67

Added line #L67 was not covered by tests
}
serviceNode, err := NodeToServiceNode(node)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to convert node to service node: %w", err)

Check warning on line 71 in api/v1/service.go

View check run for this annotation

Codecov / codecov/patch

api/v1/service.go#L71

Added line #L71 was not covered by tests
}
return connect.NewResponse(&service.GetNodeByNameResponse{Node: serviceNode}), nil
}

func (s *Service) GetNodesByGlob(ctx context.Context, req *connect.Request[service.GetNodesByGlobRequest]) (*connect.Response[service.GetNodesByGlobResponse], error) {
nodes, err := s.storage.GetNodesByGlob(req.Msg.Pattern)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to get nodes by glob: %w", err)

Check warning on line 79 in api/v1/service.go

View check run for this annotation

Codecov / codecov/patch

api/v1/service.go#L79

Added line #L79 was not covered by tests
}
serviceNodes := make([]*service.Node, 0, len(nodes))
for _, node := range nodes {
serviceNode, err := NodeToServiceNode(node)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to convert node to service node: %w", err)

Check warning on line 85 in api/v1/service.go

View check run for this annotation

Codecov / codecov/patch

api/v1/service.go#L85

Added line #L85 was not covered by tests
}
serviceNodes = append(serviceNodes, serviceNode)
}
Expand All @@ -92,11 +92,11 @@ func (s *Service) GetNodesByGlob(ctx context.Context, req *connect.Request[servi
func (s *Service) AddNode(ctx context.Context, req *connect.Request[service.AddNodeRequest]) (*connect.Response[service.AddNodeResponse], error) {
resultNode, err := graph.AddNode(s.storage, req.Msg.Node.Type, req.Msg.Node.Metadata, req.Msg.Node.Name)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to add node: %w", err)
}

Check warning on line 96 in api/v1/service.go

View check run for this annotation

Codecov / codecov/patch

api/v1/service.go#L95-L96

Added lines #L95 - L96 were not covered by tests
serviceNode, err := NodeToServiceNode(resultNode)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to convert node to service node: %w", err)
}

Check warning on line 100 in api/v1/service.go

View check run for this annotation

Codecov / codecov/patch

api/v1/service.go#L99-L100

Added lines #L99 - L100 were not covered by tests
return connect.NewResponse(&service.AddNodeResponse{Node: serviceNode}), nil
}
Expand All @@ -120,23 +120,23 @@ func (s *Service) SetDependency(ctx context.Context, req *connect.Request[servic
func (s *Service) Cache(ctx context.Context, req *connect.Request[emptypb.Empty]) (*connect.Response[emptypb.Empty], error) {
err := graph.Cache(s.storage)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to cache: %w", err)

Check warning on line 123 in api/v1/service.go

View check run for this annotation

Codecov / codecov/patch

api/v1/service.go#L123

Added line #L123 was not covered by tests
}
return connect.NewResponse(&emptypb.Empty{}), nil
}

func (s *Service) Clear(ctx context.Context, req *connect.Request[emptypb.Empty]) (*connect.Response[emptypb.Empty], error) {
err := s.storage.RemoveAllCaches()
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to clear: %w", err)

Check warning on line 131 in api/v1/service.go

View check run for this annotation

Codecov / codecov/patch

api/v1/service.go#L131

Added line #L131 was not covered by tests
}
return connect.NewResponse(&emptypb.Empty{}), nil
}

func (s *Service) CustomLeaderboard(ctx context.Context, req *connect.Request[service.CustomLeaderboardRequest]) (*connect.Response[service.CustomLeaderboardResponse], error) {
uncachedNodes, err := s.storage.ToBeCached()
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to get uncached nodes: %w", err)

Check warning on line 139 in api/v1/service.go

View check run for this annotation

Codecov / codecov/patch

api/v1/service.go#L139

Added line #L139 was not covered by tests
}
if len(uncachedNodes) != 0 {
return nil, fmt.Errorf("cannot use sorted leaderboards without caching")
Expand Down Expand Up @@ -239,18 +239,18 @@ func (s *Service) CustomLeaderboard(ctx context.Context, req *connect.Request[se
func (s *Service) AllKeys(ctx context.Context, req *connect.Request[emptypb.Empty]) (*connect.Response[service.AllKeysResponse], error) {
keys, err := s.storage.GetAllKeys()
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to get all keys: %w", err)

Check warning on line 242 in api/v1/service.go

View check run for this annotation

Codecov / codecov/patch

api/v1/service.go#L242

Added line #L242 was not covered by tests
}
nodes, err := s.storage.GetNodes(keys)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to get nodes by keys: %w", err)

Check warning on line 246 in api/v1/service.go

View check run for this annotation

Codecov / codecov/patch

api/v1/service.go#L246

Added line #L246 was not covered by tests
}

resultNodes := make([]*service.Node, 0, len(nodes))
for _, node := range nodes {
query, err := NodeToServiceNode(node)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to convert node to service node: %w", err)

Check warning on line 253 in api/v1/service.go

View check run for this annotation

Codecov / codecov/patch

api/v1/service.go#L253

Added line #L253 was not covered by tests
}
resultNodes = append(resultNodes, query)
}
Expand All @@ -266,37 +266,37 @@ func (s *Service) Query(ctx context.Context, req *connect.Request[service.QueryR
}
keys, err := s.storage.GetAllKeys()
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to get all keys: %w", err)

Check warning on line 269 in api/v1/service.go

View check run for this annotation

Codecov / codecov/patch

api/v1/service.go#L269

Added line #L269 was not covered by tests
}

nodes, err := s.storage.GetNodes(keys)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to get nodes by keys: %w", err)

Check warning on line 274 in api/v1/service.go

View check run for this annotation

Codecov / codecov/patch

api/v1/service.go#L274

Added line #L274 was not covered by tests
}

caches, err := s.storage.GetCaches(keys)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to get caches by keys: %w", err)

Check warning on line 279 in api/v1/service.go

View check run for this annotation

Codecov / codecov/patch

api/v1/service.go#L279

Added line #L279 was not covered by tests
}
cacheStack, err := s.storage.ToBeCached()
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to get to be cached nodes: %w", err)

Check warning on line 283 in api/v1/service.go

View check run for this annotation

Codecov / codecov/patch

api/v1/service.go#L283

Added line #L283 was not covered by tests
}
result, err := graph.ParseAndExecute(req.Msg.Script, s.storage, "", nodes, caches, len(cacheStack) == 0)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to parse and execute script: %w", err)
}

outputNodes, err := s.storage.GetNodes(result.ToArray())
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to get nodes by ids: %w", err)

Check warning on line 292 in api/v1/service.go

View check run for this annotation

Codecov / codecov/patch

api/v1/service.go#L292

Added line #L292 was not covered by tests
}

resultNodes := make([]*service.Node, 0, len(outputNodes))
for _, node := range outputNodes {
query, err := NodeToServiceNode(node)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to convert node to service node: %w", err)

Check warning on line 299 in api/v1/service.go

View check run for this annotation

Codecov / codecov/patch

api/v1/service.go#L299

Added line #L299 was not covered by tests
}
resultNodes = append(resultNodes, query)
}
Expand All @@ -315,23 +315,23 @@ func (s *Service) Check(ctx context.Context, req *connect.Request[emptypb.Empty]
func (s *Service) IngestSBOM(ctx context.Context, req *connect.Request[service.IngestSBOMRequest]) (*connect.Response[emptypb.Empty], error) {
err := ingest.SBOM(s.storage, req.Msg.Sbom)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to ingest sbom: %w", err)

Check warning on line 318 in api/v1/service.go

View check run for this annotation

Codecov / codecov/patch

api/v1/service.go#L318

Added line #L318 was not covered by tests
}
return connect.NewResponse(&emptypb.Empty{}), nil
}

func (s *Service) IngestVulnerability(ctx context.Context, req *connect.Request[service.IngestVulnerabilityRequest]) (*connect.Response[emptypb.Empty], error) {
err := ingest.Vulnerabilities(s.storage, req.Msg.Vulnerability)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to ingest vulnerability: %w", err)

Check warning on line 326 in api/v1/service.go

View check run for this annotation

Codecov / codecov/patch

api/v1/service.go#L326

Added line #L326 was not covered by tests
}
return connect.NewResponse(&emptypb.Empty{}), nil
}

func (s *Service) IngestScorecard(ctx context.Context, req *connect.Request[service.IngestScorecardRequest]) (*connect.Response[emptypb.Empty], error) {
err := ingest.Scorecards(s.storage, req.Msg.Scorecard)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to ingest scorecard: %w", err)

Check warning on line 334 in api/v1/service.go

View check run for this annotation

Codecov / codecov/patch

api/v1/service.go#L334

Added line #L334 was not covered by tests
}
return connect.NewResponse(&emptypb.Empty{}), nil
}
Expand Down
18 changes: 16 additions & 2 deletions api/v1/service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -198,17 +198,22 @@ func TestAddNode(t *testing.T) {
require.NoError(t, err)
assert.NotNil(t, resp.Msg.Node)
assert.Equal(t, "test_node", resp.Msg.Node.Name)

getNodeReq = connect.NewRequest(&service.GetNodeByNameRequest{Name: "nonexistent_node"})
resp, err = s.GetNodeByName(context.Background(), getNodeReq)
require.Error(t, err)
assert.Nil(t, resp)
}

func TestSetDependency(t *testing.T) {
s := setupService()
addNodeReq := connect.NewRequest(&service.AddNodeRequest{
Node: &service.Node{Name: "test_node"},
Node: &service.Node{Name: "test_node", Type: "type1"},
})
node1, err := s.AddNode(context.Background(), addNodeReq)
require.NoError(t, err)
addNodeReq2 := connect.NewRequest(&service.AddNodeRequest{
Node: &service.Node{Name: "test_node2"},
Node: &service.Node{Name: "test_node2", Type: "type1"},
})
node2, err := s.AddNode(context.Background(), addNodeReq2)
require.NoError(t, err)
Expand All @@ -222,7 +227,16 @@ func TestSetDependency(t *testing.T) {
resp, err := s.GetNodeByName(context.Background(), getNodeReq)
require.NoError(t, err)
assert.NotNil(t, resp.Msg.Node)
assert.NotEmpty(t, resp.Msg.Node.Dependencies, "Dependencies slice should not be empty")
assert.Equal(t, resp.Msg.Node.Dependencies[0], node2.Msg.Node.Id)
t.Run("non-existent node", func(t *testing.T) {
invalidReq := connect.NewRequest(&service.SetDependencyRequest{
NodeId: 0,
DependencyID: node2.Msg.Node.Id,
})
_, err = s.SetDependency(context.Background(), invalidReq)
assert.Error(t, err)
})
}

func TestHealthCheck(t *testing.T) {
Expand Down
8 changes: 6 additions & 2 deletions pkg/tools/ingest/helpers.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package ingest

import "github.com/package-url/packageurl-go"
import (
"fmt"

"github.com/package-url/packageurl-go"
)

type Ecosystem string

Expand Down Expand Up @@ -69,7 +73,7 @@ func getPURLEcosystem(pkgURL packageurl.PackageURL) Ecosystem {
func PURLToPackage(purl string) (PackageInfo, error) {
parsedPURL, err := packageurl.FromString(purl)
if err != nil {
return PackageInfo{}, err
return PackageInfo{}, fmt.Errorf("failed to parse purl: %w", err)
}
ecosystem := getPURLEcosystem(parsedPURL)

Expand Down
2 changes: 1 addition & 1 deletion pkg/tools/ingest/vuln.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ func Vulnerabilities(storage graph.Storage, data []byte) error {

keys, err := storage.GetAllKeys()
if err != nil {
return err
return fmt.Errorf("failed to get all keys: %w", err)

Check warning on line 106 in pkg/tools/ingest/vuln.go

View check run for this annotation

Codecov / codecov/patch

pkg/tools/ingest/vuln.go#L106

Added line #L106 was not covered by tests
}

nodes, err := storage.GetNodes(keys)
Expand Down

0 comments on commit 7f7bc7c

Please sign in to comment.