diff --git a/database/database.go b/database/database.go index 24657b1..2ca2464 100644 --- a/database/database.go +++ b/database/database.go @@ -112,14 +112,16 @@ func (d *Database) DeleteOne(path string) bool { func (d *Database) Count() int { mutex.Lock() defer mutex.Unlock() + return len(d.Schema.Data) } // ListPaths returns list of files present in database func (d *Database) ListPaths() []string { + keys := make([]string, 0, d.Count()) + mutex.Lock() defer mutex.Unlock() - keys := make([]string, 0, d.Count()) for k := range d.Schema.Data { keys = append(keys, k) } diff --git a/database/database_test.go b/database/database_test.go index f565940..cef9fba 100644 --- a/database/database_test.go +++ b/database/database_test.go @@ -36,6 +36,9 @@ func (s *DatabaseTestSuite) TestAll() { SHA256: "deadbeaf", } + cnt := s.db.Count() + s.Require().Equal(0, cnt) + res, ok := s.db.WriteOne("test-path", dataObject) s.Require().True(ok) s.Require().NotNil(res) @@ -55,6 +58,20 @@ func (s *DatabaseTestSuite) TestAll() { s.Require().NotNil(res) s.Require().Equal(dataObject, res) + resMap := s.db.MapObjects() + s.Require().NotNil(resMap) + s.Require().Equal(map[string]*DataObject{ + "test-path": dataObject, + }, resMap) + + resKeys := s.db.ListPaths() + s.Require().NotNil(resKeys) + s.Require().Len(resKeys, 1) + s.Require().Equal([]string{"test-path"}, resKeys) + + cnt = s.db.Count() + s.Require().Equal(1, cnt) + ok = s.db.DeleteOne("not-existent-path") s.Require().False(ok)