From c32ca9162cd10d4c72e7bd5ef48fd55a755932b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Wr=C3=B3blewski?= Date: Wed, 17 Jun 2020 06:22:46 +0200 Subject: [PATCH 1/5] List ID of records from a collection --- scribble.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/scribble.go b/scribble.go index 286af1a..b3d4082 100644 --- a/scribble.go +++ b/scribble.go @@ -8,6 +8,7 @@ import ( "io/ioutil" "os" "path/filepath" + "strings" "sync" "github.com/jcelliott/lumber" @@ -216,6 +217,35 @@ func readAll(files []os.FileInfo, dir string) ([][]byte, error) { return records, nil } +// List ID of records from a collection; this is returned as a slice of strings. +func (d *Driver) List(collection string) ([]string, error) { + + // ensure there is a collection to read + if collection == "" { + return nil, ErrMissingCollection + } + + // + dir := filepath.Join(d.dir, collection) + + // check to see if collection (directory) exists + if _, err := stat(dir); err != nil { + return nil, err + } + + // the IDs of collection + var recordsIDs []string + + for _, file := range files { + name := file.Name() + if strings.HasSuffix(name, ".json") { + recordsIDs = append(recordsIDs, name[:len(name)-5]) + } + } + + return recordsIDs, nil +} + // Delete locks that database and then attempts to remove the collection/resource // specified by [path] func (d *Driver) Delete(collection, resource string) error { From effd8e354d92b57342c3d6e71c42237eb5f3631b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Wr=C3=B3blewski?= Date: Thu, 2 Jul 2020 08:02:44 +0200 Subject: [PATCH 2/5] fix List() --- scribble.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scribble.go b/scribble.go index b3d4082..3a6e3b2 100644 --- a/scribble.go +++ b/scribble.go @@ -229,7 +229,12 @@ func (d *Driver) List(collection string) ([]string, error) { dir := filepath.Join(d.dir, collection) // check to see if collection (directory) exists - if _, err := stat(dir); err != nil { + //if _, err := stat(dir); err != nil { + // return nil, err + //} + + files, err := ioutil.ReadDir(dir) + if err != nil { return nil, err } From 7eb5116ab84cace0e70c9edb97a07210d9dc18ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Wr=C3=B3blewski?= Date: Sat, 25 Jul 2020 12:31:29 +0200 Subject: [PATCH 3/5] fix List() bad file prfix --- scribble.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scribble.go b/scribble.go index 3a6e3b2..54c5e2e 100644 --- a/scribble.go +++ b/scribble.go @@ -243,7 +243,7 @@ func (d *Driver) List(collection string) ([]string, error) { for _, file := range files { name := file.Name() - if strings.HasSuffix(name, ".json") { + if strings.HasSuffix(name, ".json") && !strings.HasPrefix(name, ".#") { recordsIDs = append(recordsIDs, name[:len(name)-5]) } } From 40c88ff10571c835f4e0b360fad061c7028cdabd Mon Sep 17 00:00:00 2001 From: SysLabIT Date: Wed, 3 Mar 2021 19:24:24 +0100 Subject: [PATCH 4/5] Update scribble.go --- scribble.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scribble.go b/scribble.go index 54c5e2e..a7e5343 100644 --- a/scribble.go +++ b/scribble.go @@ -180,8 +180,8 @@ func (d *Driver) ReadAll(collection string) ([][]byte, error) { return nil, ErrMissingCollection } - // dir := filepath.Join(d.dir, collection) + os.MkdirAll(dir, 0777) // check to see if collection (directory) exists if _, err := stat(dir); err != nil { From a5b2727275654b82178cc974268f5dacddc8e5b2 Mon Sep 17 00:00:00 2001 From: Atlas Cove Date: Wed, 1 Sep 2021 22:30:27 +0100 Subject: [PATCH 5/5] merge github.com/SysLabIT/scribble --- scribble.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/scribble.go b/scribble.go index a7e5343..4fecf1d 100644 --- a/scribble.go +++ b/scribble.go @@ -162,7 +162,6 @@ func (d *Driver) Read(collection, resource string, v interface{}) error { func read(record string, v interface{}) error { b, err := ioutil.ReadFile(record + ".json") - if err != nil { return err } @@ -180,11 +179,14 @@ func (d *Driver) ReadAll(collection string) ([][]byte, error) { return nil, ErrMissingCollection } + // dir := filepath.Join(d.dir, collection) os.MkdirAll(dir, 0777) - // check to see if collection (directory) exists - if _, err := stat(dir); err != nil { + // read all the files in the transaction.Collection; an error here just means + // the collection is either empty or doesn't exist + files, err := ioutil.ReadDir(dir) + if err != nil { return nil, err }