From ded569f36960178456ab7e2c5d56d882467cda0d Mon Sep 17 00:00:00 2001 From: Ilja Neumann Date: Thu, 1 Oct 2020 15:27:28 +0200 Subject: [PATCH] Delete + tests --- accounts/pkg/indexer/indexer.go | 15 ++++++++++++++- accounts/pkg/indexer/indexer_test.go | 22 ++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/accounts/pkg/indexer/indexer.go b/accounts/pkg/indexer/indexer.go index 67abb2bdfd..f629d0b71e 100644 --- a/accounts/pkg/indexer/indexer.go +++ b/accounts/pkg/indexer/indexer.go @@ -108,6 +108,19 @@ func (i Indexer) FindBy(t interface{}, field string, val string) ([]string, erro return result, nil } -func (i Indexer) Delete(typeName, pk string) error { +func (i Indexer) Delete(t interface{}) error { + typeName := getTypeFQN(t) + if fields, ok := i.indices[typeName]; ok { + for _, indices := range fields.indicesByField { + for _, idx := range indices { + pkVal := valueOf(t, fields.pKFieldName) + idxByVal := valueOf(t, idx.IndexBy()) + if err := idx.Remove(pkVal, idxByVal); err != nil { + return err + } + } + } + } + return nil } diff --git a/accounts/pkg/indexer/indexer_test.go b/accounts/pkg/indexer/indexer_test.go index f2d643f1be..7b5a5309e7 100644 --- a/accounts/pkg/indexer/indexer_test.go +++ b/accounts/pkg/indexer/indexer_test.go @@ -64,7 +64,29 @@ func TestIndexer_AddWithNonUniqueIndex(t *testing.T) { assert.NoError(t, err) t.Log(res) +} +func TestIndexer_DeleteWithNonUniqueIndex(t *testing.T) { + dataDir := writeIndexTestData(t, testData, "Id") + indexer := NewIndex(&Config{ + DataDir: dataDir, + IndexRootDirName: "index.disk", + Log: zerolog.Logger{}, + }) + + indexer.AddNonUniqueIndex(&TestPet{}, "Kind", "Id", "pets") + + pet1 := TestPet{Id: "goefe-789", Kind: "Hog", Color: "Green", Name: "Dicky"} + pet2 := TestPet{Id: "xadaf-189", Kind: "Hog", Color: "Green", Name: "Ricky"} + + err := indexer.Add(pet1) + assert.NoError(t, err) + + err = indexer.Add(pet2) + assert.NoError(t, err) + + err = indexer.Delete(pet2) + assert.NoError(t, err) } /*