Skip to content

Commit

Permalink
api: add missing delete db method (textileio#311)
Browse files Browse the repository at this point in the history
Signed-off-by: Sander Pick <[email protected]>
  • Loading branch information
sanderpick committed Apr 16, 2020
1 parent 1ea8c06 commit 8e68166
Show file tree
Hide file tree
Showing 5 changed files with 308 additions and 139 deletions.
13 changes: 13 additions & 0 deletions api/client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,19 @@ func (c *Client) GetDBInfo(ctx context.Context, dbID thread.ID, opts ...db.Manag
return addrs, key, nil
}

// DeleteDB deletes a db.
func (c *Client) DeleteDB(ctx context.Context, dbID thread.ID, opts ...db.ManagedDBOption) error {
args := &db.ManagedDBOptions{}
for _, opt := range opts {
opt(args)
}
ctx = thread.NewTokenContext(ctx, args.Token)
_, err := c.c.DeleteDB(ctx, &pb.DeleteDBRequest{
DbID: dbID.Bytes(),
})
return err
}

// NewCollection creates a new collection.
// @todo: This should take some thread auth, but collections currently do not involve a thread.
func (c *Client) NewCollection(ctx context.Context, dbID thread.ID, config db.CollectionConfig, opts ...db.ManagedDBOption) error {
Expand Down
81 changes: 50 additions & 31 deletions api/client/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ func TestClient_GetToken(t *testing.T) {
})
}

func TestNewDB(t *testing.T) {
func TestClient_NewDB(t *testing.T) {
t.Parallel()
client, done := setup(t)
defer done()
Expand All @@ -58,7 +58,7 @@ func TestNewDB(t *testing.T) {
})
}

func TestNewDBFromAddr(t *testing.T) {
func TestClient_NewDBFromAddr(t *testing.T) {
t.Parallel()
client1, done1 := setup(t)
defer done1()
Expand All @@ -78,65 +78,84 @@ func TestNewDBFromAddr(t *testing.T) {
})
}

func TestNewCollection(t *testing.T) {
func TestClient_GetDBInfo(t *testing.T) {
t.Parallel()
client, done := setup(t)
defer done()

t.Run("test new collection", func(t *testing.T) {
t.Run("test get db info", func(t *testing.T) {
id := thread.NewIDV1(thread.Raw, 32)
err := client.NewDB(context.Background(), id)
checkErr(t, err)
err = client.NewCollection(context.Background(), id, db.CollectionConfig{Name: collectionName, Schema: util.SchemaFromSchemaString(schema)})

addrs, key, err := client.GetDBInfo(context.Background(), id)
if err != nil {
t.Fatalf("failed add new collection: %v", err)
t.Fatalf("failed to create collection: %v", err)
}
if !key.Defined() {
t.Fatal("got undefined db key")
}
if len(addrs) == 0 {
t.Fatal("got empty addresses")
}
})
}

func TestCreate(t *testing.T) {
func TestClient_DeleteDB(t *testing.T) {
t.Parallel()
client, done := setup(t)
defer done()

t.Run("test collection create", func(t *testing.T) {
t.Run("test delete db", func(t *testing.T) {
id := thread.NewIDV1(thread.Raw, 32)
err := client.NewDB(context.Background(), id)
checkErr(t, err)
err = client.NewCollection(context.Background(), id, db.CollectionConfig{Name: collectionName, Schema: util.SchemaFromSchemaString(schema)})
checkErr(t, err)

_, err = client.Create(context.Background(), id, collectionName, Instances{createPerson()})
if err = client.DeleteDB(context.Background(), id); err != nil {
t.Fatalf("failed to delete db: %v", err)
}
if _, _, err := client.GetDBInfo(context.Background(), id); err == nil {
t.Fatal("deleted db still exists")
}
})
}

func TestClient_NewCollection(t *testing.T) {
t.Parallel()
client, done := setup(t)
defer done()

t.Run("test new collection", func(t *testing.T) {
id := thread.NewIDV1(thread.Raw, 32)
err := client.NewDB(context.Background(), id)
checkErr(t, err)
err = client.NewCollection(context.Background(), id, db.CollectionConfig{Name: collectionName, Schema: util.SchemaFromSchemaString(schema)})
if err != nil {
t.Fatalf("failed to create collection: %v", err)
t.Fatalf("failed add new collection: %v", err)
}
})
}

func TestGetDBInfo(t *testing.T) {
func TestClient_Create(t *testing.T) {
t.Parallel()
client, done := setup(t)
defer done()

t.Run("test get db info", func(t *testing.T) {
t.Run("test collection create", func(t *testing.T) {
id := thread.NewIDV1(thread.Raw, 32)
err := client.NewDB(context.Background(), id)
checkErr(t, err)
err = client.NewCollection(context.Background(), id, db.CollectionConfig{Name: collectionName, Schema: util.SchemaFromSchemaString(schema)})
checkErr(t, err)

addrs, key, err := client.GetDBInfo(context.Background(), id)
_, err = client.Create(context.Background(), id, collectionName, Instances{createPerson()})
if err != nil {
t.Fatalf("failed to create collection: %v", err)
}
if !key.Defined() {
t.Fatal("got undefined db key")
}
if len(addrs) == 0 {
t.Fatal("got empty addresses")
}
})
}

func TestSave(t *testing.T) {
func TestClient_Save(t *testing.T) {
t.Parallel()
client, done := setup(t)
defer done()
Expand All @@ -162,7 +181,7 @@ func TestSave(t *testing.T) {
})
}

func TestDelete(t *testing.T) {
func TestClient_Delete(t *testing.T) {
t.Parallel()
client, done := setup(t)
defer done()
Expand All @@ -188,7 +207,7 @@ func TestDelete(t *testing.T) {
})
}

func TestHas(t *testing.T) {
func TestClient_Has(t *testing.T) {
t.Parallel()
client, done := setup(t)
defer done()
Expand Down Expand Up @@ -217,7 +236,7 @@ func TestHas(t *testing.T) {
})
}

func TestFind(t *testing.T) {
func TestClient_Find(t *testing.T) {
t.Parallel()
client, done := setup(t)
defer done()
Expand Down Expand Up @@ -252,7 +271,7 @@ func TestFind(t *testing.T) {
})
}

func TestFindWithIndex(t *testing.T) {
func TestClient_FindWithIndex(t *testing.T) {
t.Parallel()
client, done := setup(t)
defer done()
Expand Down Expand Up @@ -293,7 +312,7 @@ func TestFindWithIndex(t *testing.T) {
})
}

func TestFindByID(t *testing.T) {
func TestClient_FindByID(t *testing.T) {
t.Parallel()
client, done := setup(t)
defer done()
Expand Down Expand Up @@ -323,7 +342,7 @@ func TestFindByID(t *testing.T) {
})
}

func TestReadTransaction(t *testing.T) {
func TestClient_ReadTransaction(t *testing.T) {
t.Parallel()
client, done := setup(t)
defer done()
Expand Down Expand Up @@ -390,7 +409,7 @@ func TestReadTransaction(t *testing.T) {
})
}

func TestWriteTransaction(t *testing.T) {
func TestClient_WriteTransaction(t *testing.T) {
t.Parallel()
client, done := setup(t)
defer done()
Expand Down Expand Up @@ -478,7 +497,7 @@ func TestWriteTransaction(t *testing.T) {
})
}

func TestListen(t *testing.T) {
func TestClient_Listen(t *testing.T) {
t.Parallel()
client, done := setup(t)
defer done()
Expand Down Expand Up @@ -556,7 +575,7 @@ func TestListen(t *testing.T) {
})
}

func TestClose(t *testing.T) {
func TestClient_Close(t *testing.T) {
t.Parallel()
addr, shutdown := makeServer(t)
defer shutdown()
Expand Down
Loading

0 comments on commit 8e68166

Please sign in to comment.