mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-05-05 06:33:19 -04:00
Delete + tests
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user