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)
OnDelete(cb Callback)
OnReconnect(func())
EmitAdd(device *Device)
EmitDelete(device *Device)
}
type Callback func(device *Device)

@ -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
}

@ -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)
}

@ -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
}

@ -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
}

Loading…
Cancel
Save