@@ -12,7 +12,6 @@ import (
1212 "github.com/raystack/compass/core/asset"
1313 "github.com/raystack/compass/core/star"
1414 "github.com/raystack/compass/core/user"
15- "github.com/raystack/compass/pkg/statsd"
1615 compassv1beta1 "github.com/raystack/compass/proto/raystack/compass/v1beta1"
1716 "github.com/r3labs/diff/v2"
1817 "google.golang.org/grpc/codes"
@@ -21,11 +20,6 @@ import (
2120 "google.golang.org/protobuf/types/known/timestamppb"
2221)
2322
24- //go:generate mockery --name=StatsDClient -r --case underscore --with-expecter --structname StatsDClient --filename statsd_monitor.go --output=./mocks
25- type StatsDClient interface {
26- Incr (name string ) * statsd.Metric
27- }
28-
2923type AssetService interface {
3024 GetAllAssets (ctx context.Context , flt asset.Filter , withTotal bool ) ([]asset.Asset , uint32 , error )
3125 GetAssetByID (ctx context.Context , id string ) (asset.Asset , error )
@@ -54,7 +48,7 @@ func (server *APIServer) GetAllAssets(ctx context.Context, req *compassv1beta1.G
5448 return nil , err
5549 }
5650
57- flt , err := asset .NewFilterBuilder ().
51+ fb := asset .NewFilterBuilder ().
5852 Types (req .GetTypes ()).
5953 Services (req .GetServices ()).
6054 Q (req .GetQ ()).
@@ -63,8 +57,11 @@ func (server *APIServer) GetAllAssets(ctx context.Context, req *compassv1beta1.G
6357 Offset (int (req .GetOffset ())).
6458 SortBy (req .GetSort ()).
6559 SortDirection (req .GetDirection ()).
66- Data (req .GetData ()).
67- Build ()
60+ Data (req .GetData ())
61+ if req .GetIsDeleted () {
62+ fb = fb .IsDeleted (true )
63+ }
64+ flt , err := fb .Build ()
6865 if err != nil {
6966 return nil , status .Error (codes .InvalidArgument , bodyParserErrorMsg (err ))
7067 }
@@ -260,6 +257,9 @@ func (server *APIServer) UpsertAsset(ctx context.Context, req *compassv1beta1.Up
260257 req .GetDownstreams (),
261258 )
262259 if err != nil {
260+ if req .GetUpdateOnly () && errors .As (err , new (asset.NotFoundError )) {
261+ return & compassv1beta1.UpsertAssetResponse {Id : "" }, nil
262+ }
263263 return nil , err
264264 }
265265
@@ -290,8 +290,14 @@ func (server *APIServer) UpsertPatchAsset(ctx context.Context, req *compassv1bet
290290 }
291291
292292 ast , err := server .assetService .GetAssetByID (ctx , urn )
293- if err != nil && ! errors .As (err , & asset.NotFoundError {}) {
294- return nil , internalServerError (server .logger , err .Error ())
293+ if err != nil {
294+ if errors .As (err , & asset.NotFoundError {}) {
295+ if req .GetUpdateOnly () {
296+ return & compassv1beta1.UpsertPatchAssetResponse {Id : "" }, nil
297+ }
298+ } else {
299+ return nil , internalServerError (server .logger , err .Error ())
300+ }
295301 }
296302
297303 patchAssetMap := decodePatchAssetToMap (baseAsset )
@@ -332,12 +338,6 @@ func (server *APIServer) DeleteAsset(ctx context.Context, req *compassv1beta1.De
332338 if errors .As (err , new (asset.NotFoundError )) {
333339 return nil , status .Error (codes .NotFound , err .Error ())
334340 }
335- if errors .As (err , new (asset.DiscoveryError )) {
336- server .sendStatsDCounterMetric ("discovery_error" ,
337- map [string ]string {
338- "method" : "delete" ,
339- })
340- }
341341 return nil , internalServerError (server .logger , err .Error ())
342342 }
343343
@@ -404,21 +404,9 @@ func (server *APIServer) upsertAsset(
404404 if errors .As (err , new (asset.InvalidError )) {
405405 return "" , status .Error (codes .InvalidArgument , err .Error ())
406406 } else if err != nil {
407- if errors .As (err , new (asset.DiscoveryError )) {
408- server .sendStatsDCounterMetric ("discovery_error" ,
409- map [string ]string {
410- "method" : mode ,
411- })
412- }
413407 return "" , internalServerError (server .logger , err .Error ())
414408 }
415409
416- server .sendStatsDCounterMetric (mode ,
417- map [string ]string {
418- "type" : ast .Type .String (),
419- "service" : ast .Service ,
420- })
421-
422410 return
423411}
424412
@@ -431,24 +419,12 @@ func (server *APIServer) upsertAssetWithoutLineage(ctx context.Context, ns *name
431419
432420 assetID , err := server .assetService .UpsertAssetWithoutLineage (ctx , ns , & ast )
433421 if err != nil {
434- switch {
435- case errors .As (err , new (asset.InvalidError )):
422+ if errors .As (err , new (asset.InvalidError )) {
436423 return "" , status .Error (codes .InvalidArgument , err .Error ())
437-
438- case errors .As (err , new (asset.DiscoveryError )):
439- server .sendStatsDCounterMetric ("discovery_error" ,
440- map [string ]string {
441- "method" : mode ,
442- })
443424 }
444-
445425 return "" , internalServerError (server .logger , err .Error ())
446426 }
447427
448- server .sendStatsDCounterMetric (mode , map [string ]string {
449- "type" : ast .Type .String (),
450- "service" : ast .Service ,
451- })
452428 return assetID , nil
453429}
454430
@@ -629,6 +605,7 @@ func assetToProto(a asset.Asset, withChangelog bool) (assetPB *compassv1beta1.As
629605 CreatedAt : createdAtPB ,
630606 UpdatedAt : updatedAtPB ,
631607 Probes : probes ,
608+ IsDeleted : a .IsDeleted ,
632609 }
633610 return
634611}
0 commit comments