Delete + tests

This commit is contained in:
Ilja Neumann
2020-10-01 15:27:28 +02:00
parent a8f7d5d5f7
commit ded569f369
2 changed files with 36 additions and 1 deletions

View File

@@ -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
}

View File

@@ -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)
}
/*