diff options
| author | Paul Buetow <paul@buetow.org> | 2024-09-12 21:53:54 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2024-09-12 21:53:54 +0300 |
| commit | c2671a57fea7457fb24a3d65f5f4a2a1cc65bebe (patch) | |
| tree | 32bf5ef04e61a8c9ae38d2eddc4d48031b8cceaf /internal/server/repository/repository.go | |
| parent | e012a4e256e5dab4b37c5af318fa5faf1eb55910 (diff) | |
add pending.delete
Diffstat (limited to 'internal/server/repository/repository.go')
| -rw-r--r-- | internal/server/repository/repository.go | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/internal/server/repository/repository.go b/internal/server/repository/repository.go index f0eff12..e8cec81 100644 --- a/internal/server/repository/repository.go +++ b/internal/server/repository/repository.go @@ -104,10 +104,7 @@ func (r Repository) load() error { errs = append(errs, err) continue } - - r.mu.Lock() - r.entries[entry.ID] = entry - r.mu.Unlock() + r.putMemoryOnly(entry) } if len(errs) == 0 { @@ -145,9 +142,7 @@ func (r Repository) ListBytes() ([]byte, error) { // Is a bit more refined, tries to merge the same entry wich are slightly // different into the same entry. func (r Repository) put(entry types.Entry) error { - r.mu.Lock() - defer r.mu.Unlock() - r.entries[entry.ID] = entry + r.putMemoryOnly(entry) bytes, err := entry.JSONMarshal() if err != err { @@ -156,6 +151,20 @@ func (r Repository) put(entry types.Entry) error { return r.fs.WriteFile(r.entryPath(entry), bytes) } +// putMemoryOnly is the same as put but don't write to disk. +func (r Repository) putMemoryOnly(entry types.Entry) { + r.mu.Lock() + defer r.mu.Unlock() + + r.entries[entry.ID] = entry + + for _, platform := range r.conf.SocialPlatformsEnabled { + if !entry.IsShared(platform) { + r.pending.add(platform, entry.ID) + } + } +} + func (r Repository) Get(id types.EntryID) (types.Entry, error) { if !r.getIdRe.MatchString(id) { return types.Entry{}, fmt.Errorf("invalid id %s", id) |
