From 8c2e75df51d1a74d8bca1d3d1a423f777159ba82 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Mon, 6 May 2024 20:32:35 +0300 Subject: refactor project file structure --- internal/server/repository/repository.go | 36 ++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 internal/server/repository/repository.go (limited to 'internal/server/repository') diff --git a/internal/server/repository/repository.go b/internal/server/repository/repository.go new file mode 100644 index 0000000..5fe79fd --- /dev/null +++ b/internal/server/repository/repository.go @@ -0,0 +1,36 @@ +package repository + +import ( + "log" + "os" + "path/filepath" + "strings" +) + +type Repository struct { + dataDir string +} + +func New(dataDir string) Repository { + return Repository{dataDir} +} + +func (r Repository) List() ([]string, error) { + var ids []string + + visit := func(files *[]string) filepath.WalkFunc { + return func(path string, info os.FileInfo, err error) error { + if err != nil { + log.Println(err) + return nil + } + if !info.IsDir() && strings.HasSuffix(path, ".json") { + *files = append(*files, strings.TrimPrefix(path, r.dataDir)) + } + return nil + } + } + + err := filepath.Walk(r.dataDir, visit(&ids)) + return ids, err +} -- cgit v1.2.3