Skip to content

Commit

Permalink
feat(grpc): add get assets query params filtering to grpc (#109)
Browse files Browse the repository at this point in the history
* feat: add get assets query params filtering to grpc

* refactor: update config name to filter

* fix(asset): failing test in handler

* chore: update proton commit

Co-authored-by: Muhammad Abduh <mabdh@users.noreply.github.com>
  • Loading branch information
scortier and mabdh authored Apr 14, 2022
1 parent 1c6538c commit cccc0f8
Show file tree
Hide file tree
Showing 28 changed files with 1,139 additions and 912 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
NAME="github.com/odpf/columbus"
VERSION=$(shell git describe --always --tags 2>/dev/null)
COVERFILE="/tmp/columbus.coverprofile"
PROTON_COMMIT := "39dd0f995eec1369eaa4ab811f2142484a085af8"
PROTON_COMMIT := "712a5a1ae39c6dbbd5a1e152c2c082dde18b5e79"

.PHONY: all build test clean install proto

Expand Down
1,377 changes: 738 additions & 639 deletions api/proto/odpf/compass/v1beta1/service.pb.go

Large diffs are not rendered by default.

88 changes: 85 additions & 3 deletions api/proto/odpf/compass/v1beta1/service.pb.validate.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

63 changes: 45 additions & 18 deletions api/v1beta1/asset.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"context"
"errors"
"fmt"
"strings"

compassv1beta1 "github.com/odpf/columbus/api/proto/odpf/compass/v1beta1"
"github.com/odpf/columbus/asset"
Expand All @@ -15,16 +16,17 @@ import (
)

func (h *Handler) GetAllAssets(ctx context.Context, req *compassv1beta1.GetAllAssetsRequest) (*compassv1beta1.GetAllAssetsResponse, error) {
config := asset.GRPCConfig{
Text: req.GetText(),
Type: asset.Type(req.GetType()),
Service: req.GetService(),
Size: int(req.GetSize()),
Offset: int(req.GetOffset()),

if err := req.ValidateAll(); err != nil {
return nil, status.Error(codes.InvalidArgument, bodyParserErrorMsg(err))
}
cfg := config.ToConfig()

assets, err := h.AssetRepository.GetAll(ctx, cfg)
flt, err := h.buildGetAllAssetsFilter(req)
if err != nil {
return nil, status.Error(codes.InvalidArgument, bodyParserErrorMsg(err))
}

assets, err := h.AssetRepository.GetAll(ctx, flt)
if err != nil {
return nil, internalServerError(h.Logger, err.Error())
}
Expand All @@ -43,14 +45,7 @@ func (h *Handler) GetAllAssets(ctx context.Context, req *compassv1beta1.GetAllAs
}

if req.GetWithTotal() {
grpcConfig := asset.GRPCConfig{
Type: config.Type,
Service: config.Service,
Text: config.Text,
}
cfg = grpcConfig.ToConfig()

total, err := h.AssetRepository.GetCount(ctx, cfg)
total, err := h.AssetRepository.GetCount(ctx, flt)
if err != nil {
return nil, internalServerError(h.Logger, err.Error())
}
Expand All @@ -60,6 +55,38 @@ func (h *Handler) GetAllAssets(ctx context.Context, req *compassv1beta1.GetAllAs
return response, nil
}

func (h *Handler) buildGetAllAssetsFilter(req *compassv1beta1.GetAllAssetsRequest) (asset.Filter, error) {

flt := asset.Filter{
Size: int(req.GetSize()),
Offset: int(req.GetOffset()),
SortBy: req.GetSort(),
SortDirection: req.GetDirection(),
Query: req.GetQ(),
Data: req.GetData(),
}

if req.GetTypes() != "" {
typs := strings.Split(req.GetTypes(), ",")
for _, typeVal := range typs {
flt.Types = append(flt.Types, asset.Type(typeVal))
}
}
if req.GetServices() != "" {
flt.Services = strings.Split(req.GetServices(), ",")
}

if req.GetQFields() != "" {
flt.QueryFields = strings.Split(req.GetQFields(), ",")
}

if err := flt.Validate(); err != nil {
return asset.Filter{}, err
}

return flt, nil
}

func (h *Handler) GetAssetByID(ctx context.Context, req *compassv1beta1.GetAssetByIDRequest) (*compassv1beta1.GetAssetByIDResponse, error) {
ast, err := h.AssetRepository.GetByID(ctx, req.GetId())
if err != nil {
Expand Down Expand Up @@ -206,7 +233,7 @@ func (h *Handler) DeleteAsset(ctx context.Context, req *compassv1beta1.DeleteAss

func (h *Handler) GetAssetStargazers(ctx context.Context, req *compassv1beta1.GetAssetStargazersRequest) (*compassv1beta1.GetAssetStargazersResponse, error) {

users, err := h.StarRepository.GetStargazers(ctx, star.Config{
users, err := h.StarRepository.GetStargazers(ctx, star.Filter{
Size: int(req.GetSize()),
Offset: int(req.GetOffset()),
}, req.GetId())
Expand All @@ -231,7 +258,7 @@ func (h *Handler) GetAssetStargazers(ctx context.Context, req *compassv1beta1.Ge
}

func (h *Handler) GetAssetVersionHistory(ctx context.Context, req *compassv1beta1.GetAssetVersionHistoryRequest) (*compassv1beta1.GetAssetVersionHistoryResponse, error) {
assetVersions, err := h.AssetRepository.GetVersionHistory(ctx, asset.Config{
assetVersions, err := h.AssetRepository.GetVersionHistory(ctx, asset.Filter{
Size: int(req.GetSize()),
Offset: int(req.GetOffset()),
}, req.GetId())
Expand Down
Loading

0 comments on commit cccc0f8

Please sign in to comment.