From da7086c32501784598314f269effebfaeca8300a Mon Sep 17 00:00:00 2001 From: Jade McGough Date: Thu, 25 Oct 2018 01:20:06 -0700 Subject: [PATCH] feat(bolt): clean up user resource mappings after deleting resources --- bolt/bucket.go | 8 +++++++- bolt/dashboard.go | 8 +++++++- bolt/user.go | 7 ++++++- bolt/view.go | 8 +++++++- 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/bolt/bucket.go b/bolt/bucket.go index e6751c88f2..72eafd4343 100644 --- a/bolt/bucket.go +++ b/bolt/bucket.go @@ -419,5 +419,11 @@ func (c *Client) deleteBucket(ctx context.Context, tx *bolt.Tx, id platform.ID) if err != nil { return err } - return tx.Bucket(bucketBucket).Delete(encodedID) + if err := tx.Bucket(bucketBucket).Delete(encodedID); err != nil { + return err + } + return c.deleteUserResourceMappings(ctx, tx, platform.UserResourceMappingFilter{ + ResourceID: id, + ResourceType: platform.BucketResourceType, + }) } diff --git a/bolt/dashboard.go b/bolt/dashboard.go index 27f8dfcdf4..9789eb2241 100644 --- a/bolt/dashboard.go +++ b/bolt/dashboard.go @@ -422,5 +422,11 @@ func (c *Client) deleteDashboard(ctx context.Context, tx *bolt.Tx, id platform.I if err != nil { return err } - return tx.Bucket(dashboardBucket).Delete(encodedID) + if err := tx.Bucket(dashboardBucket).Delete(encodedID); err != nil { + return err + } + return c.deleteUserResourceMappings(ctx, tx, platform.UserResourceMappingFilter{ + ResourceID: id, + ResourceType: platform.DashboardResourceType, + }) } diff --git a/bolt/user.go b/bolt/user.go index 9abf22ce7c..236c93db2d 100644 --- a/bolt/user.go +++ b/bolt/user.go @@ -318,7 +318,12 @@ func (c *Client) deleteUser(ctx context.Context, tx *bolt.Tx, id platform.ID) er if err := tx.Bucket(userIndex).Delete(userIndexKey(u.Name)); err != nil { return err } - return tx.Bucket(userBucket).Delete(encodedID) + if err := tx.Bucket(userBucket).Delete(encodedID); err != nil { + return err + } + return c.deleteUserResourceMappings(ctx, tx, platform.UserResourceMappingFilter{ + UserID: id, + }) } func (c *Client) deleteUsersAuthorizations(ctx context.Context, tx *bolt.Tx, id platform.ID) error { diff --git a/bolt/view.go b/bolt/view.go index 3f2ea48e1d..a12cc78584 100644 --- a/bolt/view.go +++ b/bolt/view.go @@ -266,5 +266,11 @@ func (c *Client) deleteView(ctx context.Context, tx *bolt.Tx, id platform.ID) er if err != nil { return err } - return tx.Bucket(viewBucket).Delete(encodedID) + if err := tx.Bucket(viewBucket).Delete(encodedID); err != nil { + return err + } + return c.deleteUserResourceMappings(ctx, tx, platform.UserResourceMappingFilter{ + ResourceID: id, + ResourceType: platform.ViewResourceType, + }) }