summaryrefslogtreecommitdiff
path: root/internal/server/repository
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-05-06 20:32:35 +0300
committerPaul Buetow <paul@buetow.org>2024-05-06 20:32:35 +0300
commit8c2e75df51d1a74d8bca1d3d1a423f777159ba82 (patch)
treeb340984869230f92d0aea54d104efc5618c54954 /internal/server/repository
parentd06809e50aa20b7f2e12ed43374aebb39e77a220 (diff)
refactor project file structure
Diffstat (limited to 'internal/server/repository')
-rw-r--r--internal/server/repository/repository.go36
1 files changed, 36 insertions, 0 deletions
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
+}