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
|
||||
}
|
||||
|
||||
// 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.
|
||||
// `document` must be serializable to JSON.
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
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