From be02748b38e639ecd12fb3a07797c25a22b4bc43 Mon Sep 17 00:00:00 2001 From: James Batt Date: Mon, 14 Dec 2020 23:01:02 +1100 Subject: [PATCH] fixed sqlite + mysql storage --- internal/storage/contracts.go | 2 ++ internal/storage/inmemory.go | 4 ++-- internal/storage/inprocesswatcher.go | 4 ++-- internal/storage/pgwatcher.go | 8 ++++++++ internal/storage/sql.go | 2 ++ 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/internal/storage/contracts.go b/internal/storage/contracts.go index bef9566..421e7df 100644 --- a/internal/storage/contracts.go +++ b/internal/storage/contracts.go @@ -24,6 +24,8 @@ type Watcher interface { OnAdd(cb Callback) OnDelete(cb Callback) OnReconnect(func()) + EmitAdd(device *Device) + EmitDelete(device *Device) } type Callback func(device *Device) diff --git a/internal/storage/inmemory.go b/internal/storage/inmemory.go index 2416b02..5de900c 100644 --- a/internal/storage/inmemory.go +++ b/internal/storage/inmemory.go @@ -29,7 +29,7 @@ func (s *InMemoryStorage) Close() error { func (s *InMemoryStorage) Save(device *Device) error { s.db[key(device)] = device - s.emitAdd(device) + s.EmitAdd(device) return nil } @@ -72,6 +72,6 @@ func (s *InMemoryStorage) GetByPublicKey(publicKey string) (*Device, error) { func (s *InMemoryStorage) Delete(device *Device) error { delete(s.db, key(device)) - s.emitDelete(device) + s.EmitDelete(device) return nil } diff --git a/internal/storage/inprocesswatcher.go b/internal/storage/inprocesswatcher.go index 9f009e7..14f0a63 100644 --- a/internal/storage/inprocesswatcher.go +++ b/internal/storage/inprocesswatcher.go @@ -24,13 +24,13 @@ func (w *InProcessWatcher) OnReconnect(cb func()) { // noop because the inprocess watcher can't disconnect } -func (w *InProcessWatcher) emitAdd(device *Device) { +func (w *InProcessWatcher) EmitAdd(device *Device) { for _, cb := range w.add { cb(device) } } -func (w *InProcessWatcher) emitDelete(device *Device) { +func (w *InProcessWatcher) EmitDelete(device *Device) { for _, cb := range w.delete { cb(device) } diff --git a/internal/storage/pgwatcher.go b/internal/storage/pgwatcher.go index d210fdc..6f196b5 100644 --- a/internal/storage/pgwatcher.go +++ b/internal/storage/pgwatcher.go @@ -59,3 +59,11 @@ func (w *PgWatcher) emit(cb Callback, event *pgevents.TableEvent) { cb(device) } } + +func (w *PgWatcher) EmitAdd(device *Device) { + // noop because we rely on postgres channels +} + +func (w *PgWatcher) EmitDelete(device *Device) { + // noop because we rely on postgres channels +} diff --git a/internal/storage/sql.go b/internal/storage/sql.go index d34710e..e2ef332 100644 --- a/internal/storage/sql.go +++ b/internal/storage/sql.go @@ -143,6 +143,7 @@ func (s *SQLStorage) Save(device *Device) error { if err := s.db.Save(&device).Error; err != nil { return errors.Wrapf(err, "failed to write device") } + s.Watcher.EmitAdd(device) return nil } @@ -182,5 +183,6 @@ func (s *SQLStorage) Delete(device *Device) error { if err := s.db.Delete(&device).Error; err != nil { return errors.Wrap(err, "failed to delete device file") } + s.Watcher.EmitDelete(device) return nil }