summaryrefslogtreecommitdiff
path: root/internal/server
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-09-12 22:15:29 +0300
committerPaul Buetow <paul@buetow.org>2024-09-12 22:15:29 +0300
commit1223f1c53a1803f54a5cdb8993b0464ea5c185a8 (patch)
treee722e3f2a19a1e72466c2e3a539c218346b5202f /internal/server
parent87c98f19b5ea8333c30a4b0ba5330b4ac338c9cc (diff)
add and persist
Diffstat (limited to 'internal/server')
-rw-r--r--internal/server/repository/repository.go9
-rw-r--r--internal/server/repository/repository_test.go14
2 files changed, 13 insertions, 10 deletions
diff --git a/internal/server/repository/repository.go b/internal/server/repository/repository.go
index 3bcec4d..16f1932 100644
--- a/internal/server/repository/repository.go
+++ b/internal/server/repository/repository.go
@@ -153,8 +153,6 @@ func (r Repository) add(entry types.Entry) {
}
func (r Repository) persist(entry types.Entry) error {
- r.add(entry)
-
bytes, err := entry.JSONMarshal()
if err != err {
return err
@@ -162,6 +160,11 @@ func (r Repository) persist(entry types.Entry) error {
return r.fs.WriteFile(r.entryPath(entry), bytes)
}
+func (r Repository) addAndPersist(entry types.Entry) error {
+ r.add(entry)
+ return r.persist(entry)
+}
+
func (r Repository) Get(id types.EntryID) (types.Entry, error) {
if !r.getIdRe.MatchString(id) {
return types.Entry{}, fmt.Errorf("invalid id %s", id)
@@ -233,7 +236,7 @@ func (r Repository) Merge(otherEnt types.Entry) error {
var changed bool
entry, changed, _ = entry.Update(otherEnt)
- r.entries[otherEnt.ID] = entry
+ r.add(entry)
if !changed {
// Hasn't changed, so no need to write anything to file.
diff --git a/internal/server/repository/repository_test.go b/internal/server/repository/repository_test.go
index 805cd04..f78834d 100644
--- a/internal/server/repository/repository_test.go
+++ b/internal/server/repository/repository_test.go
@@ -18,7 +18,7 @@ func TestRepositoryPutGet(t *testing.T) {
for _, entry := range makeEntries(t) {
t.Run(entry.ID, func(t *testing.T) {
- _ = repo.persist(entry)
+ _ = repo.addAndPersist(entry)
entGot, err := repo.Get(entry.ID)
if err != nil {
t.Error(err)
@@ -69,7 +69,7 @@ func TestRepositoryList(t *testing.T) {
entries := makeEntries(t)
for _, entry := range entries {
- _ = repo.persist(entry)
+ _ = repo.addAndPersist(entry)
}
pairs, _ := repo.List()
@@ -98,7 +98,7 @@ func TestRepositoryHasSameEntry(t *testing.T) {
fs := make(vfs.MemoryFS)
repo := newRepository(server.ServerConfig{DataDir: "./data"}, fs)
entry, _ := makeAnEntry()
- _ = repo.persist(entry)
+ _ = repo.addAndPersist(entry)
pair := entryPair{entry.ID, entry.Checksum()}
if !repo.hasSameEntry(pair) {
@@ -117,7 +117,7 @@ func TestRepositoryMerge(t *testing.T) {
fs := make(vfs.MemoryFS)
repo := newRepository(server.ServerConfig{DataDir: "./data"}, fs)
entry1, _ := makeAnEntry()
- _ = repo.persist(entry1)
+ _ = repo.addAndPersist(entry1)
entry2, _ := makeAnotherEntry()
// Need to have the same IDs so that the entries will actually be merged
@@ -149,9 +149,9 @@ func TestRepositoryMergeFromPartner(t *testing.T) {
repo2 := newRepository(server.ServerConfig{DataDir: "./data2"}, fs2)
entry1, _ := makeAnEntry()
- _ = repo1.persist(entry1)
+ _ = repo1.addAndPersist(entry1)
entry2, _ := makeAnotherEntry()
- _ = repo2.persist(entry2)
+ _ = repo2.addAndPersist(entry2)
getPair := func(ctx context.Context, partner string, pairs *[]entryPair) error {
var (
@@ -302,7 +302,7 @@ func TestRepositoryNext(t *testing.T) {
entries := makeEntries(t)
for _, entry := range entries {
- _ = repo.persist(entry)
+ _ = repo.addAndPersist(entry)
}
if entry, ok := repo.Next(types.Mastodon); ok {