diff options
| author | Paul Buetow <paul@buetow.org> | 2024-05-16 00:37:44 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2024-05-16 00:37:44 +0300 |
| commit | dc6f16912693a7a95d7375f08d42600ea2ce130e (patch) | |
| tree | 2339a41fab439764ec3cf138fc599c66c8de9789 /internal/server | |
| parent | 4057c17487a6713adccad61da8a3a58a0863db37 (diff) | |
repository singleton is a pointer
Diffstat (limited to 'internal/server')
| -rw-r--r-- | internal/server/handle/handle.go | 1 | ||||
| -rw-r--r-- | internal/server/repository/repository.go | 18 |
2 files changed, 11 insertions, 8 deletions
diff --git a/internal/server/handle/handle.go b/internal/server/handle/handle.go index 0a0a1bb..14125e1 100644 --- a/internal/server/handle/handle.go +++ b/internal/server/handle/handle.go @@ -19,6 +19,7 @@ import ( var getIDRe = regexp.MustCompile(`^/[0-9]{4}/[a-z0-9]{64}\.json$`) +// TODO: Use repository.Repository to store the file to the file system func Submit(w http.ResponseWriter, r *http.Request, dataDir string) error { if r.Method != "POST" { return fmt.Errorf("expexted POST request") diff --git a/internal/server/repository/repository.go b/internal/server/repository/repository.go index 4146526..d2a9a9e 100644 --- a/internal/server/repository/repository.go +++ b/internal/server/repository/repository.go @@ -12,7 +12,7 @@ import ( ) var ( - instance Repository + instance *Repository once sync.Once ) @@ -27,19 +27,20 @@ type Repository struct { mu *sync.Mutex } -func Instance(dataDir string) Repository { +func Instance(dataDir string) *Repository { once.Do(func() { - instance.dataDir = dataDir - instance.entries = make(map[string]types.Entry) - instance.mu = &sync.Mutex{} + instance = &Repository{ + dataDir: dataDir, + entries: make(map[string]types.Entry), + mu: &sync.Mutex{}, + } }) return instance } -func (r Repository) store(entry types.Entry) { +func (r Repository) add(entry types.Entry) { r.mu.Lock() defer r.mu.Unlock() - r.entries[entry.ID] = entry } @@ -59,7 +60,7 @@ func (r Repository) load() error { if err != err { return err } - r.store(entry) + r.add(entry) return nil } } @@ -105,4 +106,5 @@ func (r Repository) Merge(new types.Entry) { } r.entries[new.ID] = old.Update(new) + panic("Not yet implemented: shoud write entry also to disk") } |
