diff options
| author | Paul Buetow <paul@buetow.org> | 2024-05-06 20:32:35 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2024-05-06 20:32:35 +0300 |
| commit | 8c2e75df51d1a74d8bca1d3d1a423f777159ba82 (patch) | |
| tree | b340984869230f92d0aea54d104efc5618c54954 /internal/server/repository | |
| parent | d06809e50aa20b7f2e12ed43374aebb39e77a220 (diff) | |
refactor project file structure
Diffstat (limited to 'internal/server/repository')
| -rw-r--r-- | internal/server/repository/repository.go | 36 |
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 +} |
