Refactoring bolt package
parent
ae9e7c0087
commit
16f92c41cd
|
@ -1,7 +1,6 @@
|
|||
package bolt
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
@ -28,7 +27,7 @@ func (c *Client) initializeAuthorizations(ctx context.Context, tx *bolt.Tx) erro
|
|||
}
|
||||
|
||||
func (c *Client) setUserOnAuthorization(ctx context.Context, tx *bolt.Tx, a *platform.Authorization) error {
|
||||
u, err := c.findUserByID(ctx, tx, a.UserID)
|
||||
u, err := c.findUserByID(ctx, tx, *a.UserID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -59,7 +58,7 @@ func (c *Client) FindAuthorizationByID(ctx context.Context, id platform.ID) (*pl
|
|||
func (c *Client) findAuthorizationByID(ctx context.Context, tx *bolt.Tx, id platform.ID) (*platform.Authorization, error) {
|
||||
var a platform.Authorization
|
||||
|
||||
v := tx.Bucket(authorizationBucket).Get(id)
|
||||
v := tx.Bucket(authorizationBucket).Get(id.Encode())
|
||||
|
||||
if len(v) == 0 {
|
||||
// TODO: Make standard error
|
||||
|
@ -94,14 +93,17 @@ func (c *Client) FindAuthorizationByToken(ctx context.Context, n string) (*platf
|
|||
}
|
||||
|
||||
func (c *Client) findAuthorizationByToken(ctx context.Context, tx *bolt.Tx, n string) (*platform.Authorization, error) {
|
||||
id := tx.Bucket(authorizationIndex).Get(authorizationIndexKey(n))
|
||||
return c.findAuthorizationByID(ctx, tx, platform.ID(id))
|
||||
var id platform.ID
|
||||
if err := id.Decode(tx.Bucket(authorizationIndex).Get(authorizationIndexKey(n))); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return c.findAuthorizationByID(ctx, tx, id)
|
||||
}
|
||||
|
||||
func filterAuthorizationsFn(filter platform.AuthorizationFilter) func(a *platform.Authorization) bool {
|
||||
if filter.ID != nil {
|
||||
return func(a *platform.Authorization) bool {
|
||||
return bytes.Equal(a.ID, *filter.ID)
|
||||
return a.ID != nil && *a.ID == *filter.ID
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -113,7 +115,7 @@ func filterAuthorizationsFn(filter platform.AuthorizationFilter) func(a *platfor
|
|||
|
||||
if filter.UserID != nil {
|
||||
return func(a *platform.Authorization) bool {
|
||||
return bytes.Equal(a.UserID, *filter.UserID)
|
||||
return a.UserID != nil && *a.UserID == *filter.UserID
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -166,7 +168,7 @@ func (c *Client) findAuthorizations(ctx context.Context, tx *bolt.Tx, f platform
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
f.UserID = &u.ID
|
||||
f.UserID = u.ID
|
||||
}
|
||||
|
||||
as := []*platform.Authorization{}
|
||||
|
@ -187,7 +189,7 @@ func (c *Client) findAuthorizations(ctx context.Context, tx *bolt.Tx, f platform
|
|||
// CreateAuthorization creates a platform authorization and sets b.ID, and b.UserID if not provided.
|
||||
func (c *Client) CreateAuthorization(ctx context.Context, a *platform.Authorization) error {
|
||||
return c.db.Update(func(tx *bolt.Tx) error {
|
||||
if len(a.UserID) == 0 {
|
||||
if a.UserID == nil {
|
||||
u, err := c.findUserByName(ctx, tx, a.User)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -228,10 +230,10 @@ func (c *Client) putAuthorization(ctx context.Context, tx *bolt.Tx, a *platform.
|
|||
return err
|
||||
}
|
||||
|
||||
if err := tx.Bucket(authorizationIndex).Put(authorizationIndexKey(a.Token), a.ID); err != nil {
|
||||
if err := tx.Bucket(authorizationIndex).Put(authorizationIndexKey(a.Token), a.ID.Encode()); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := tx.Bucket(authorizationBucket).Put(a.ID, v); err != nil {
|
||||
if err := tx.Bucket(authorizationBucket).Put(a.ID.Encode(), v); err != nil {
|
||||
}
|
||||
return c.setUserOnAuthorization(ctx, tx, a)
|
||||
}
|
||||
|
@ -265,9 +267,9 @@ func (c *Client) uniqueAuthorizationToken(ctx context.Context, tx *bolt.Tx, a *p
|
|||
}
|
||||
|
||||
// DeleteAuthorization deletes a authorization and prunes it from the index.
|
||||
func (c *Client) DeleteAuthorization(ctx context.Context, id platform.ID) error {
|
||||
func (c *Client) DeleteAuthorization(ctx context.Context, id *platform.ID) error {
|
||||
return c.db.Update(func(tx *bolt.Tx) error {
|
||||
return c.deleteAuthorization(ctx, tx, id)
|
||||
return c.deleteAuthorization(ctx, tx, *id)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -279,5 +281,5 @@ func (c *Client) deleteAuthorization(ctx context.Context, tx *bolt.Tx, id platfo
|
|||
if err := tx.Bucket(authorizationIndex).Delete(authorizationIndexKey(a.Token)); err != nil {
|
||||
return err
|
||||
}
|
||||
return tx.Bucket(authorizationBucket).Delete(id)
|
||||
return tx.Bucket(authorizationBucket).Delete(id.Encode())
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ func initAuthorizationService(f platformtesting.AuthorizationFields, t *testing.
|
|||
return c, func() {
|
||||
defer closeFn()
|
||||
for _, u := range f.Users {
|
||||
if err := c.DeleteUser(ctx, u.ID); err != nil {
|
||||
if err := c.DeleteUser(ctx, *u.ID); err != nil {
|
||||
t.Logf("failed to remove user: %v", err)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package bolt
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
@ -26,7 +25,7 @@ func (c *Client) initializeBuckets(ctx context.Context, tx *bolt.Tx) error {
|
|||
}
|
||||
|
||||
func (c *Client) setOrganizationOnBucket(ctx context.Context, tx *bolt.Tx, b *platform.Bucket) error {
|
||||
o, err := c.findOrganizationByID(ctx, tx, b.OrganizationID)
|
||||
o, err := c.findOrganizationByID(ctx, tx, *b.OrganizationID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -57,7 +56,7 @@ func (c *Client) FindBucketByID(ctx context.Context, id platform.ID) (*platform.
|
|||
func (c *Client) findBucketByID(ctx context.Context, tx *bolt.Tx, id platform.ID) (*platform.Bucket, error) {
|
||||
var b platform.Bucket
|
||||
|
||||
v := tx.Bucket(bucketBucket).Get(id)
|
||||
v := tx.Bucket(bucketBucket).Get(id.Encode())
|
||||
|
||||
if len(v) == 0 {
|
||||
// TODO: Make standard error
|
||||
|
@ -94,11 +93,14 @@ func (c *Client) FindBucketByName(ctx context.Context, orgID platform.ID, n stri
|
|||
|
||||
func (c *Client) findBucketByName(ctx context.Context, tx *bolt.Tx, orgID platform.ID, n string) (*platform.Bucket, error) {
|
||||
b := &platform.Bucket{
|
||||
OrganizationID: orgID,
|
||||
OrganizationID: &orgID,
|
||||
Name: n,
|
||||
}
|
||||
id := tx.Bucket(bucketIndex).Get(bucketIndexKey(b))
|
||||
return c.findBucketByID(ctx, tx, platform.ID(id))
|
||||
var id platform.ID
|
||||
if err := id.Decode(tx.Bucket(bucketIndex).Get(bucketIndexKey(b))); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return c.findBucketByID(ctx, tx, id)
|
||||
}
|
||||
|
||||
// FindBucket retrives a bucket using an arbitrary bucket filter.
|
||||
|
@ -120,7 +122,7 @@ func (c *Client) FindBucket(ctx context.Context, filter platform.BucketFilter) (
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
filter.OrganizationID = &o.ID
|
||||
filter.OrganizationID = o.ID
|
||||
}
|
||||
|
||||
filterFn := filterBucketsFn(filter)
|
||||
|
@ -147,13 +149,13 @@ func (c *Client) FindBucket(ctx context.Context, filter platform.BucketFilter) (
|
|||
func filterBucketsFn(filter platform.BucketFilter) func(b *platform.Bucket) bool {
|
||||
if filter.ID != nil {
|
||||
return func(b *platform.Bucket) bool {
|
||||
return bytes.Equal(b.ID, *filter.ID)
|
||||
return b.ID != nil && *b.ID == *filter.ID
|
||||
}
|
||||
}
|
||||
|
||||
if filter.Name != nil && filter.OrganizationID != nil {
|
||||
return func(b *platform.Bucket) bool {
|
||||
return bytes.Equal(b.OrganizationID, *filter.OrganizationID) && b.Name == *filter.Name
|
||||
return b.Name == *filter.Name && b.OrganizationID != nil && *b.OrganizationID == *filter.OrganizationID
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -165,7 +167,7 @@ func filterBucketsFn(filter platform.BucketFilter) func(b *platform.Bucket) bool
|
|||
|
||||
if filter.OrganizationID != nil {
|
||||
return func(b *platform.Bucket) bool {
|
||||
return bytes.Equal(b.OrganizationID, *filter.OrganizationID)
|
||||
return b.OrganizationID != nil && *b.OrganizationID == *filter.OrganizationID
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -218,7 +220,7 @@ func (c *Client) findBuckets(ctx context.Context, tx *bolt.Tx, filter platform.B
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
filter.OrganizationID = &o.ID
|
||||
filter.OrganizationID = o.ID
|
||||
}
|
||||
|
||||
filterFn := filterBucketsFn(filter)
|
||||
|
@ -239,7 +241,7 @@ func (c *Client) findBuckets(ctx context.Context, tx *bolt.Tx, filter platform.B
|
|||
// CreateBucket creates a platform bucket and sets b.ID.
|
||||
func (c *Client) CreateBucket(ctx context.Context, b *platform.Bucket) error {
|
||||
return c.db.Update(func(tx *bolt.Tx) error {
|
||||
if len(b.OrganizationID) == 0 {
|
||||
if b.OrganizationID == nil {
|
||||
o, err := c.findOrganizationByName(ctx, tx, b.Organization)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -274,19 +276,21 @@ func (c *Client) putBucket(ctx context.Context, tx *bolt.Tx, b *platform.Bucket)
|
|||
return err
|
||||
}
|
||||
|
||||
if err := tx.Bucket(bucketIndex).Put(bucketIndexKey(b), b.ID); err != nil {
|
||||
if err := tx.Bucket(bucketIndex).Put(bucketIndexKey(b), b.ID.Encode()); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := tx.Bucket(bucketBucket).Put(b.ID, v); err != nil {
|
||||
if err := tx.Bucket(bucketBucket).Put(b.ID.Encode(), v); err != nil {
|
||||
return err
|
||||
}
|
||||
return c.setOrganizationOnBucket(ctx, tx, b)
|
||||
}
|
||||
|
||||
func bucketIndexKey(b *platform.Bucket) []byte {
|
||||
k := make([]byte, len(b.OrganizationID)+len(b.Name))
|
||||
copy(k, b.OrganizationID)
|
||||
copy(k[len(b.OrganizationID):], []byte(b.Name))
|
||||
orgID := b.OrganizationID.Encode()
|
||||
lenOrgID := len(orgID)
|
||||
k := make([]byte, lenOrgID+len(b.Name))
|
||||
copy(k, orgID)
|
||||
copy(k[lenOrgID:], []byte(b.Name))
|
||||
return k
|
||||
}
|
||||
|
||||
|
@ -375,5 +379,5 @@ func (c *Client) deleteBucket(ctx context.Context, tx *bolt.Tx, id platform.ID)
|
|||
if err := tx.Bucket(bucketIndex).Delete(bucketIndexKey(b)); err != nil {
|
||||
return err
|
||||
}
|
||||
return tx.Bucket(bucketBucket).Delete(id)
|
||||
return tx.Bucket(bucketBucket).Delete(id.Encode())
|
||||
}
|
||||
|
|
|
@ -28,12 +28,12 @@ func initBucketService(f platformtesting.BucketFields, t *testing.T) (platform.B
|
|||
return c, func() {
|
||||
defer closeFn()
|
||||
for _, o := range f.Organizations {
|
||||
if err := c.DeleteOrganization(ctx, o.ID); err != nil {
|
||||
if err := c.DeleteOrganization(ctx, *o.ID); err != nil {
|
||||
t.Logf("failed to remove organization: %v", err)
|
||||
}
|
||||
}
|
||||
for _, b := range f.Buckets {
|
||||
if err := c.DeleteBucket(ctx, b.ID); err != nil {
|
||||
if err := c.DeleteBucket(ctx, *b.ID); err != nil {
|
||||
t.Logf("failed to remove bucket: %v", err)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package bolt
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
@ -22,7 +21,7 @@ func (c *Client) initializeDashboards(ctx context.Context, tx *bolt.Tx) error {
|
|||
}
|
||||
|
||||
func (c *Client) setOrganizationOnDashboard(ctx context.Context, tx *bolt.Tx, d *platform.Dashboard) error {
|
||||
o, err := c.findOrganizationByID(ctx, tx, d.OrganizationID)
|
||||
o, err := c.findOrganizationByID(ctx, tx, *d.OrganizationID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -53,7 +52,7 @@ func (c *Client) FindDashboardByID(ctx context.Context, id platform.ID) (*platfo
|
|||
func (c *Client) findDashboardByID(ctx context.Context, tx *bolt.Tx, id platform.ID) (*platform.Dashboard, error) {
|
||||
var d platform.Dashboard
|
||||
|
||||
v := tx.Bucket(dashboardBucket).Get(id)
|
||||
v := tx.Bucket(dashboardBucket).Get(id.Encode())
|
||||
|
||||
if len(v) == 0 {
|
||||
// TODO: Make standard error
|
||||
|
@ -86,7 +85,7 @@ func (c *Client) FindDashboard(ctx context.Context, filter platform.DashboardFil
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
filter.OrganizationID = &o.ID
|
||||
filter.OrganizationID = o.ID
|
||||
}
|
||||
|
||||
filterFn := filterDashboardsFn(filter)
|
||||
|
@ -113,13 +112,13 @@ func (c *Client) FindDashboard(ctx context.Context, filter platform.DashboardFil
|
|||
func filterDashboardsFn(filter platform.DashboardFilter) func(d *platform.Dashboard) bool {
|
||||
if filter.ID != nil {
|
||||
return func(d *platform.Dashboard) bool {
|
||||
return bytes.Equal(d.ID, *filter.ID)
|
||||
return d.ID != nil && *d.ID == *filter.ID
|
||||
}
|
||||
}
|
||||
|
||||
if filter.OrganizationID != nil {
|
||||
return func(d *platform.Dashboard) bool {
|
||||
return bytes.Equal(d.OrganizationID, *filter.OrganizationID)
|
||||
return d.OrganizationID != nil && *d.OrganizationID == *filter.OrganizationID
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -173,7 +172,7 @@ func (c *Client) findDashboards(ctx context.Context, tx *bolt.Tx, filter platfor
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
filter.OrganizationID = &o.ID
|
||||
filter.OrganizationID = o.ID
|
||||
}
|
||||
|
||||
filterFn := filterDashboardsFn(filter)
|
||||
|
@ -194,7 +193,7 @@ func (c *Client) findDashboards(ctx context.Context, tx *bolt.Tx, filter platfor
|
|||
// CreateDashboard creates a platform dashboard and sets d.ID.
|
||||
func (c *Client) CreateDashboard(ctx context.Context, d *platform.Dashboard) error {
|
||||
return c.db.Update(func(tx *bolt.Tx) error {
|
||||
if len(d.OrganizationID) == 0 {
|
||||
if d.OrganizationID == nil {
|
||||
o, err := c.findOrganizationByName(ctx, tx, d.Organization)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -226,7 +225,7 @@ func (c *Client) putDashboard(ctx context.Context, tx *bolt.Tx, d *platform.Dash
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := tx.Bucket(dashboardBucket).Put(d.ID, v); err != nil {
|
||||
if err := tx.Bucket(dashboardBucket).Put(d.ID.Encode(), v); err != nil {
|
||||
return err
|
||||
}
|
||||
return c.setOrganizationOnDashboard(ctx, tx, d)
|
||||
|
@ -299,7 +298,7 @@ func (c *Client) deleteDashboard(ctx context.Context, tx *bolt.Tx, id platform.I
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return tx.Bucket(dashboardBucket).Delete(id)
|
||||
return tx.Bucket(dashboardBucket).Delete(id.Encode())
|
||||
}
|
||||
|
||||
// AddDashboardCell adds a cell to a dashboard.
|
||||
|
@ -324,7 +323,7 @@ func (c *Client) ReplaceDashboardCell(ctx context.Context, dashboardID platform.
|
|||
}
|
||||
idx := -1
|
||||
for i, cell := range d.Cells {
|
||||
if bytes.Equal(dc.ID, cell.ID) {
|
||||
if dc.ID != nil && cell.ID != nil && *dc.ID == *cell.ID {
|
||||
idx = i
|
||||
break
|
||||
}
|
||||
|
@ -349,7 +348,7 @@ func (c *Client) RemoveDashboardCell(ctx context.Context, dashboardID platform.I
|
|||
}
|
||||
idx := -1
|
||||
for i, cell := range d.Cells {
|
||||
if bytes.Equal(cellID, cell.ID) {
|
||||
if cell.ID != nil && cellID == *cell.ID {
|
||||
idx = i
|
||||
break
|
||||
}
|
||||
|
|
|
@ -28,12 +28,12 @@ func initDashboardService(f platformtesting.DashboardFields, t *testing.T) (plat
|
|||
return c, func() {
|
||||
defer closeFn()
|
||||
for _, o := range f.Organizations {
|
||||
if err := c.DeleteOrganization(ctx, o.ID); err != nil {
|
||||
if err := c.DeleteOrganization(ctx, *o.ID); err != nil {
|
||||
t.Logf("failed to remove organization: %v", err)
|
||||
}
|
||||
}
|
||||
for _, b := range f.Dashboards {
|
||||
if err := c.DeleteDashboard(ctx, b.ID); err != nil {
|
||||
if err := c.DeleteDashboard(ctx, *b.ID); err != nil {
|
||||
t.Logf("failed to remove dashboard: %v", err)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package bolt
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
@ -50,7 +49,7 @@ func (c *Client) FindOrganizationByID(ctx context.Context, id platform.ID) (*pla
|
|||
func (c *Client) findOrganizationByID(ctx context.Context, tx *bolt.Tx, id platform.ID) (*platform.Organization, error) {
|
||||
var o platform.Organization
|
||||
|
||||
v := tx.Bucket(organizationBucket).Get(id)
|
||||
v := tx.Bucket(organizationBucket).Get(id.Encode())
|
||||
|
||||
if len(v) == 0 {
|
||||
// TODO: Make standard error
|
||||
|
@ -81,8 +80,11 @@ func (c *Client) FindOrganizationByName(ctx context.Context, n string) (*platfor
|
|||
}
|
||||
|
||||
func (c *Client) findOrganizationByName(ctx context.Context, tx *bolt.Tx, n string) (*platform.Organization, error) {
|
||||
id := tx.Bucket(organizationIndex).Get(organizationIndexKey(n))
|
||||
return c.findOrganizationByID(ctx, tx, platform.ID(id))
|
||||
var id platform.ID
|
||||
if err := id.Decode(tx.Bucket(organizationIndex).Get(organizationIndexKey(n))); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return c.findOrganizationByID(ctx, tx, id)
|
||||
}
|
||||
|
||||
// FindOrganization retrives a organization using an arbitrary organization filter.
|
||||
|
@ -124,7 +126,7 @@ func (c *Client) FindOrganization(ctx context.Context, filter platform.Organizat
|
|||
func filterOrganizationsFn(filter platform.OrganizationFilter) func(o *platform.Organization) bool {
|
||||
if filter.ID != nil {
|
||||
return func(o *platform.Organization) bool {
|
||||
return bytes.Equal(o.ID, *filter.ID)
|
||||
return o.ID != nil && *o.ID == *filter.ID
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -206,10 +208,10 @@ func (c *Client) putOrganization(ctx context.Context, tx *bolt.Tx, o *platform.O
|
|||
return err
|
||||
}
|
||||
|
||||
if err := tx.Bucket(organizationIndex).Put(organizationIndexKey(o.Name), o.ID); err != nil {
|
||||
if err := tx.Bucket(organizationIndex).Put(organizationIndexKey(o.Name), o.ID.Encode()); err != nil {
|
||||
return err
|
||||
}
|
||||
return tx.Bucket(organizationBucket).Put(o.ID, v)
|
||||
return tx.Bucket(organizationBucket).Put(o.ID.Encode(), v)
|
||||
}
|
||||
|
||||
func organizationIndexKey(n string) []byte {
|
||||
|
@ -292,7 +294,7 @@ func (c *Client) deleteOrganization(ctx context.Context, tx *bolt.Tx, id platfor
|
|||
if err := tx.Bucket(organizationIndex).Delete(organizationIndexKey(o.Name)); err != nil {
|
||||
return err
|
||||
}
|
||||
return tx.Bucket(organizationBucket).Delete(id)
|
||||
return tx.Bucket(organizationBucket).Delete(id.Encode())
|
||||
}
|
||||
|
||||
func (c *Client) deleteOrganizationsBuckets(ctx context.Context, tx *bolt.Tx, id platform.ID) error {
|
||||
|
@ -304,7 +306,7 @@ func (c *Client) deleteOrganizationsBuckets(ctx context.Context, tx *bolt.Tx, id
|
|||
return err
|
||||
}
|
||||
for _, b := range bs {
|
||||
if err := c.deleteBucket(ctx, tx, b.ID); err != nil {
|
||||
if err := c.deleteBucket(ctx, tx, *b.ID); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,8 +22,8 @@ func initOrganizationService(f platformtesting.OrganizationFields, t *testing.T)
|
|||
}
|
||||
return c, func() {
|
||||
defer closeFn()
|
||||
for _, u := range f.Organizations {
|
||||
if err := c.DeleteOrganization(ctx, u.ID); err != nil {
|
||||
for _, o := range f.Organizations {
|
||||
if err := c.DeleteOrganization(ctx, *o.ID); err != nil {
|
||||
t.Logf("failed to remove organizations: %v", err)
|
||||
}
|
||||
}
|
||||
|
|
20
bolt/user.go
20
bolt/user.go
|
@ -1,7 +1,6 @@
|
|||
package bolt
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
@ -50,7 +49,7 @@ func (c *Client) FindUserByID(ctx context.Context, id platform.ID) (*platform.Us
|
|||
func (c *Client) findUserByID(ctx context.Context, tx *bolt.Tx, id platform.ID) (*platform.User, error) {
|
||||
var u platform.User
|
||||
|
||||
v := tx.Bucket(userBucket).Get(id)
|
||||
v := tx.Bucket(userBucket).Get(id.Encode())
|
||||
|
||||
if len(v) == 0 {
|
||||
// TODO: Make standard error
|
||||
|
@ -81,8 +80,11 @@ func (c *Client) FindUserByName(ctx context.Context, n string) (*platform.User,
|
|||
}
|
||||
|
||||
func (c *Client) findUserByName(ctx context.Context, tx *bolt.Tx, n string) (*platform.User, error) {
|
||||
id := tx.Bucket(userIndex).Get(userIndexKey(n))
|
||||
return c.findUserByID(ctx, tx, platform.ID(id))
|
||||
var id platform.ID
|
||||
if err := id.Decode(tx.Bucket(userIndex).Get(userIndexKey(n))); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return c.findUserByID(ctx, tx, id)
|
||||
}
|
||||
|
||||
// FindUser retrives a user using an arbitrary user filter.
|
||||
|
@ -124,7 +126,7 @@ func (c *Client) FindUser(ctx context.Context, filter platform.UserFilter) (*pla
|
|||
func filterUsersFn(filter platform.UserFilter) func(u *platform.User) bool {
|
||||
if filter.ID != nil {
|
||||
return func(u *platform.User) bool {
|
||||
return bytes.Equal(u.ID, *filter.ID)
|
||||
return u.ID != nil && *u.ID == *filter.ID
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -206,10 +208,10 @@ func (c *Client) putUser(ctx context.Context, tx *bolt.Tx, u *platform.User) err
|
|||
return err
|
||||
}
|
||||
|
||||
if err := tx.Bucket(userIndex).Put(userIndexKey(u.Name), u.ID); err != nil {
|
||||
if err := tx.Bucket(userIndex).Put(userIndexKey(u.Name), u.ID.Encode()); err != nil {
|
||||
return err
|
||||
}
|
||||
return tx.Bucket(userBucket).Put(u.ID, v)
|
||||
return tx.Bucket(userBucket).Put(u.ID.Encode(), v)
|
||||
}
|
||||
|
||||
func userIndexKey(n string) []byte {
|
||||
|
@ -293,7 +295,7 @@ 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(id)
|
||||
return tx.Bucket(userBucket).Delete(id.Encode())
|
||||
}
|
||||
|
||||
func (c *Client) deleteUsersAuthorizations(ctx context.Context, tx *bolt.Tx, id platform.ID) error {
|
||||
|
@ -305,7 +307,7 @@ func (c *Client) deleteUsersAuthorizations(ctx context.Context, tx *bolt.Tx, id
|
|||
return err
|
||||
}
|
||||
for _, a := range as {
|
||||
if err := c.deleteAuthorization(ctx, tx, a.ID); err != nil {
|
||||
if err := c.deleteAuthorization(ctx, tx, *a.ID); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@ func initUserService(f platformtesting.UserFields, t *testing.T) (platform.UserS
|
|||
return c, func() {
|
||||
defer closeFn()
|
||||
for _, u := range f.Users {
|
||||
if err := c.DeleteUser(ctx, u.ID); err != nil {
|
||||
if err := c.DeleteUser(ctx, *u.ID); err != nil {
|
||||
t.Logf("failed to remove users: %v", err)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue