summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-08-12 09:46:37 +0300
committerPaul Buetow <paul@buetow.org>2024-08-12 09:46:37 +0300
commit3e50142dc3932acb618a0bc030e8530c6c1e736c (patch)
tree9861baddb2567959c99b23565122e0e9e720b36b
parent36560e8aad76a8ea9edc5c10869a2b55a832d62c (diff)
refactor config handling in repository
-rw-r--r--internal/server/handler/handler.go8
-rw-r--r--internal/server/repository/repository.go15
-rw-r--r--internal/server/repository/repository_test.go11
3 files changed, 18 insertions, 16 deletions
diff --git a/internal/server/handler/handler.go b/internal/server/handler/handler.go
index 835f3fb..603e37c 100644
--- a/internal/server/handler/handler.go
+++ b/internal/server/handler/handler.go
@@ -40,7 +40,7 @@ func (h Handler) Submit(ctx context.Context, w http.ResponseWriter, r *http.Requ
if err != nil {
return err
}
- return repository.Instance(h.conf.DataDir).Merge(ent)
+ return repository.Instance(h.conf).Merge(ent)
}
func (h Handler) List(w http.ResponseWriter, r *http.Request) error {
@@ -48,7 +48,7 @@ func (h Handler) List(w http.ResponseWriter, r *http.Request) error {
return fmt.Errorf("expexted GET request")
}
- list, err := repository.Instance(h.conf.DataDir).ListBytes()
+ list, err := repository.Instance(h.conf).ListBytes()
if err != nil {
return err
}
@@ -63,7 +63,7 @@ func (h Handler) Get(w http.ResponseWriter, r *http.Request) error {
return fmt.Errorf("invalid id %s", id)
}
- ent, ok := repository.Instance(h.conf.DataDir).Get(id)
+ ent, ok := repository.Instance(h.conf).Get(id)
if !ok {
return fmt.Errorf("no entry with id %s found", id)
}
@@ -93,7 +93,7 @@ func (h Handler) mergeFromPartner(ctx context.Context, partner string) error {
var (
errs []error
uri = fmt.Sprintf("%s/list", partner)
- repo = repository.Instance(h.conf.DataDir)
+ repo = repository.Instance(h.conf)
pairs []repository.EntryPair
)
diff --git a/internal/server/repository/repository.go b/internal/server/repository/repository.go
index 90b64bc..af8ea70 100644
--- a/internal/server/repository/repository.go
+++ b/internal/server/repository/repository.go
@@ -8,6 +8,7 @@ import (
"sync"
"time"
+ "codeberg.org/snonux/gos/internal/config/server"
"codeberg.org/snonux/gos/internal/types"
"codeberg.org/snonux/gos/internal/vfs"
)
@@ -29,25 +30,25 @@ type EntryPair struct {
}
type Repository struct {
- dataDir string
+ conf server.ServerConfig
entries map[string]types.Entry
mu *sync.Mutex
fs fs
loaded *bool
}
-func Instance(dataDir string) Repository {
+func Instance(conf server.ServerConfig) Repository {
once.Do(func() {
- instance = newRepository(dataDir, vfs.RealFS{})
+ instance = newRepository(conf, vfs.RealFS{})
_ = instance.load()
})
return instance
}
-func newRepository(dataDir string, fs fs) Repository {
+func newRepository(conf server.ServerConfig, fs fs) Repository {
var loaded bool
return Repository{
- dataDir: dataDir,
+ conf: conf,
entries: make(map[string]types.Entry),
mu: &sync.Mutex{},
fs: fs,
@@ -73,7 +74,7 @@ func (r Repository) load() error {
return nil
}
- filePaths, err := r.fs.FindFiles(r.dataDir, ".json")
+ filePaths, err := r.fs.FindFiles(r.conf.DataDir, ".json")
if err != nil {
return err
}
@@ -150,7 +151,7 @@ func (r Repository) HasSameEntry(pair EntryPair) bool {
}
func (r Repository) entryPath(ent types.Entry) string {
- return fmt.Sprintf("%s/%s/%s.json", r.dataDir, time.Now().Format("2006"), ent.ID)
+ return fmt.Sprintf("%s/%s/%s.json", r.conf.DataDir, time.Now().Format("2006"), ent.ID)
}
func (r Repository) Merge(otherEnt types.Entry) error {
diff --git a/internal/server/repository/repository_test.go b/internal/server/repository/repository_test.go
index 01babcb..78a7a59 100644
--- a/internal/server/repository/repository_test.go
+++ b/internal/server/repository/repository_test.go
@@ -3,6 +3,7 @@ package repository
import (
"testing"
+ "codeberg.org/snonux/gos/internal/config/server"
"codeberg.org/snonux/gos/internal/types"
"codeberg.org/snonux/gos/internal/vfs"
)
@@ -11,7 +12,7 @@ func TestRepositoryPutGet(t *testing.T) {
t.Parallel()
fs := make(vfs.MemoryFS)
- repo := newRepository("./data", fs)
+ repo := newRepository(server.ServerConfig{DataDir: "./data"}, fs)
for _, ent := range makeEntries(t) {
t.Run(ent.ID, func(t *testing.T) {
@@ -31,7 +32,7 @@ func TestRepositoryLoad(t *testing.T) {
t.Parallel()
fs := make(vfs.MemoryFS)
- repo := newRepository("./data", fs)
+ repo := newRepository(server.ServerConfig{DataDir: "./data"}, fs)
entries := makeEntries(t)
// Write entries into the VFS
@@ -62,7 +63,7 @@ func TestRepositoryList(t *testing.T) {
t.Parallel()
fs := make(vfs.MemoryFS)
- repo := newRepository("./data", fs)
+ repo := newRepository(server.ServerConfig{DataDir: "./data"}, fs)
entries := makeEntries(t)
for _, ent := range entries {
@@ -93,7 +94,7 @@ func TestRepositoryHasSameEntry(t *testing.T) {
t.Parallel()
fs := make(vfs.MemoryFS)
- repo := newRepository("./data", fs)
+ repo := newRepository(server.ServerConfig{DataDir: "./data"}, fs)
ent, _ := makeAnEntry()
_ = repo.put(ent)
@@ -112,7 +113,7 @@ func TestRepositoryMerge(t *testing.T) {
t.Parallel()
fs := make(vfs.MemoryFS)
- repo := newRepository("./data", fs)
+ repo := newRepository(server.ServerConfig{DataDir: "./data"}, fs)
ent1, _ := makeAnEntry()
_ = repo.put(ent1)