diff options
| author | Paul Buetow <paul@buetow.org> | 2024-08-16 10:32:01 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2024-08-16 10:32:01 +0300 |
| commit | 0d08ddb9e26f1858a44c4c8cb4a6d941d6953dc5 (patch) | |
| tree | 76a2616533f703b1e8847ff8b28aada0e5b874ad /internal/server/repository/repository.go | |
| parent | 3fe31adbbd5e26144510d91b312c891c97b294ff (diff) | |
can test updating shared flag merge
Diffstat (limited to 'internal/server/repository/repository.go')
| -rw-r--r-- | internal/server/repository/repository.go | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/internal/server/repository/repository.go b/internal/server/repository/repository.go index 8f9ce09..0fbff97 100644 --- a/internal/server/repository/repository.go +++ b/internal/server/repository/repository.go @@ -65,18 +65,6 @@ func newRepository(conf server.ServerConfig, fs fs) Repository { } } -func (r Repository) Put(ent types.Entry) error { - r.mu.Lock() - defer r.mu.Unlock() - r.entries[ent.ID] = ent - - bytes, err := ent.JSONMarshal() - if err != err { - return err - } - return r.fs.WriteFile(r.entryPath(ent), bytes) -} - // Load repository into memory if not done yet. func (r Repository) load() error { if *r.loaded { @@ -140,6 +128,21 @@ func (r Repository) ListBytes() ([]byte, error) { return json.Marshal(pairs) } +// put writes exact the same entry to the repository. Whereas merge +// Is a bit more refined, tries to merge the same entry wich are slightly +// different into the same entry. +func (r Repository) put(ent types.Entry) error { + r.mu.Lock() + defer r.mu.Unlock() + r.entries[ent.ID] = ent + + bytes, err := ent.JSONMarshal() + if err != err { + return err + } + return r.fs.WriteFile(r.entryPath(ent), bytes) +} + func (r Repository) Get(id string) (types.Entry, error) { if !r.getIdRe.MatchString(id) { return types.Entry{}, fmt.Errorf("invalid id %s", id) @@ -185,6 +188,11 @@ func (r Repository) entryPath(ent types.Entry) string { return fmt.Sprintf("%s/%s/%s.json", r.conf.DataDir, time.Now().Format("2006"), ent.ID) } +func (r Repository) Update(ent types.Entry) error { + // Update is just an alias for the merge, makes the intention clearer. + return r.Merge(ent) +} + func (r Repository) Merge(otherEnt types.Entry) error { _ = r.load() r.mu.Lock() |
