jsondb: Add Delete function
This allows database entries to be deleted. Related: RHEL-60120
This commit is contained in:
parent
fd7dc96d06
commit
5961b69caa
2 changed files with 43 additions and 0 deletions
|
|
@ -79,6 +79,14 @@ func (db *JSONDatabase) List() ([]string, error) {
|
||||||
return names, nil
|
return names, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Delete will delete the file from the database
|
||||||
|
func (db *JSONDatabase) Delete(name string) error {
|
||||||
|
if len(name) == 0 {
|
||||||
|
return fmt.Errorf("missing jsondb document name")
|
||||||
|
}
|
||||||
|
return os.Remove(filepath.Join(db.dir, name+".json"))
|
||||||
|
}
|
||||||
|
|
||||||
// Writes `document` to `name`, overwriting a previous document if it exists.
|
// Writes `document` to `name`, overwriting a previous document if it exists.
|
||||||
// `document` must be serializable to JSON.
|
// `document` must be serializable to JSON.
|
||||||
func (db *JSONDatabase) Write(name string, document interface{}) error {
|
func (db *JSONDatabase) Write(name string, document interface{}) error {
|
||||||
|
|
|
||||||
|
|
@ -121,3 +121,38 @@ func TestMultiple(t *testing.T) {
|
||||||
require.Equalf(t, doc, d, "error retrieving document '%s'", name)
|
require.Equalf(t, doc, d, "error retrieving document '%s'", name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestDelete(t *testing.T) {
|
||||||
|
dir := t.TempDir()
|
||||||
|
|
||||||
|
perm := os.FileMode(0600)
|
||||||
|
documents := map[string]document{
|
||||||
|
"one": document{"octopus", true},
|
||||||
|
"two": document{"zebra", false},
|
||||||
|
"three": document{"clownfish", true},
|
||||||
|
}
|
||||||
|
|
||||||
|
db := jsondb.New(dir, perm)
|
||||||
|
|
||||||
|
for name, doc := range documents {
|
||||||
|
err := db.Write(name, doc)
|
||||||
|
require.NoError(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err := db.Delete("two")
|
||||||
|
require.Nil(t, err)
|
||||||
|
|
||||||
|
names, err := db.List()
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.ElementsMatch(t, []string{"one", "three"}, names)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestDeleteError(t *testing.T) {
|
||||||
|
dir := t.TempDir()
|
||||||
|
|
||||||
|
perm := os.FileMode(0600)
|
||||||
|
db := jsondb.New(dir, perm)
|
||||||
|
|
||||||
|
err := db.Delete("missing")
|
||||||
|
require.Error(t, err)
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue