summaryrefslogtreecommitdiff
path: root/internal/server/repository/repository.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-09-12 21:53:54 +0300
committerPaul Buetow <paul@buetow.org>2024-09-12 21:53:54 +0300
commitc2671a57fea7457fb24a3d65f5f4a2a1cc65bebe (patch)
tree32bf5ef04e61a8c9ae38d2eddc4d48031b8cceaf /internal/server/repository/repository.go
parente012a4e256e5dab4b37c5af318fa5faf1eb55910 (diff)
add pending.delete
Diffstat (limited to 'internal/server/repository/repository.go')
-rw-r--r--internal/server/repository/repository.go23
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)