diff options
author | siddharth <s@ricketyspace.net> | 2021-11-28 17:03:18 -0500 |
---|---|---|
committer | siddharth <s@ricketyspace.net> | 2021-11-28 17:03:18 -0500 |
commit | 337741015cc46179fa8886079a416bb2fe4f4845 (patch) | |
tree | 0e914f58f1a86b2fb9951eadecfa75e7491c3314 | |
parent | 8adac927363d1f541b0737c96c713cd6d79acb79 (diff) |
db: update FernDB
Add `mutex` field to the FernDB struct.
-rw-r--r-- | db/db.go | 4 | ||||
-rw-r--r-- | db/db_test.go | 16 |
2 files changed, 20 insertions, 0 deletions
@@ -8,6 +8,7 @@ import ( "fmt" "os" "path" + "sync" "ricketyspace.net/fern/file" ) @@ -15,6 +16,7 @@ import ( var dbPath string type FernDB struct { + mutex *sync.Mutex // For writes to `downloaded` // Key: feed-id // Value: feed-id's entries that were downloaded downloaded map[string][]string @@ -42,6 +44,7 @@ func Open() (*FernDB, error) { if err != nil { // db does not exist yet; create an empty one. db := new(FernDB) + db.mutex = new(sync.Mutex) db.downloaded = make(map[string][]string) return db, nil } @@ -58,6 +61,7 @@ func Open() (*FernDB, error) { // Unmarshal db into an object. db := new(FernDB) + db.mutex = new(sync.Mutex) err = json.Unmarshal(bs, &db.downloaded) if err != nil { return nil, err diff --git a/db/db_test.go b/db/db_test.go index 5a2a983..e2308c1 100644 --- a/db/db_test.go +++ b/db/db_test.go @@ -46,6 +46,14 @@ func TestOpenNewDB(t *testing.T) { return } + // Verify that 'mutex' is initialized. + if db.mutex == nil { + t.Errorf("db.mutex is nil") + return + } + db.mutex.Lock() + db.mutex.Unlock() + // Verify that 'downloaded' is initialized if db.downloaded == nil { t.Errorf("db.downloaded is nil") @@ -77,6 +85,14 @@ func TestOpenExistingDB(t *testing.T) { return } + // Verify that 'mutex' is initialized. + if db.mutex == nil { + t.Errorf("db.mutex is nil") + return + } + db.mutex.Lock() + db.mutex.Unlock() + // Validate db.downloaded. var entries, expectedEntries []string var ok bool |