fixed sqlite + mysql storage

pull/99/head
James Batt 3 years ago
parent bbbfacf3b1
commit be02748b38

@ -24,6 +24,8 @@ type Watcher interface {
OnAdd(cb Callback) OnAdd(cb Callback)
OnDelete(cb Callback) OnDelete(cb Callback)
OnReconnect(func()) OnReconnect(func())
EmitAdd(device *Device)
EmitDelete(device *Device)
} }
type Callback func(device *Device) type Callback func(device *Device)

@ -29,7 +29,7 @@ func (s *InMemoryStorage) Close() error {
func (s *InMemoryStorage) Save(device *Device) error { func (s *InMemoryStorage) Save(device *Device) error {
s.db[key(device)] = device s.db[key(device)] = device
s.emitAdd(device) s.EmitAdd(device)
return nil return nil
} }
@ -72,6 +72,6 @@ func (s *InMemoryStorage) GetByPublicKey(publicKey string) (*Device, error) {
func (s *InMemoryStorage) Delete(device *Device) error { func (s *InMemoryStorage) Delete(device *Device) error {
delete(s.db, key(device)) delete(s.db, key(device))
s.emitDelete(device) s.EmitDelete(device)
return nil return nil
} }

@ -24,13 +24,13 @@ func (w *InProcessWatcher) OnReconnect(cb func()) {
// noop because the inprocess watcher can't disconnect // 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 { for _, cb := range w.add {
cb(device) cb(device)
} }
} }
func (w *InProcessWatcher) emitDelete(device *Device) { func (w *InProcessWatcher) EmitDelete(device *Device) {
for _, cb := range w.delete { for _, cb := range w.delete {
cb(device) cb(device)
} }

@ -59,3 +59,11 @@ func (w *PgWatcher) emit(cb Callback, event *pgevents.TableEvent) {
cb(device) 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
}

@ -143,6 +143,7 @@ func (s *SQLStorage) Save(device *Device) error {
if err := s.db.Save(&device).Error; err != nil { if err := s.db.Save(&device).Error; err != nil {
return errors.Wrapf(err, "failed to write device") return errors.Wrapf(err, "failed to write device")
} }
s.Watcher.EmitAdd(device)
return nil return nil
} }
@ -182,5 +183,6 @@ func (s *SQLStorage) Delete(device *Device) error {
if err := s.db.Delete(&device).Error; err != nil { if err := s.db.Delete(&device).Error; err != nil {
return errors.Wrap(err, "failed to delete device file") return errors.Wrap(err, "failed to delete device file")
} }
s.Watcher.EmitDelete(device)
return nil return nil
} }

Loading…
Cancel
Save