Browse Source

refactor db code

boyska 5 years ago
parent
commit
d13474b239
4 changed files with 66 additions and 65 deletions
  1. 61 0
      larigira/db.py
  2. 2 62
      larigira/event.py
  3. 1 1
      larigira/event_manage.py
  4. 2 2
      larigira/tests/test_db.py

+ 61 - 0
larigira/db.py

@@ -0,0 +1,61 @@
+from tinydb import TinyDB
+
+class EventModel(object):
+    def __init__(self, uri):
+        self.uri = uri
+        self.db = None
+        self.reload()
+
+    def reload(self):
+        if self.db is not None:
+            self.db.close()
+        self.db = TinyDB(self.uri, indent=2)
+        self._actions = self.db.table('actions')
+        self._alarms = self.db.table('alarms')
+
+    def get_action_by_id(self, action_id):
+        return self._actions.get(eid=action_id)
+
+    def get_alarm_by_id(self, alarm_id):
+        return self._alarms.get(eid=alarm_id)
+
+    def get_actions_by_alarm(self, alarm):
+        for action_id in alarm.get('actions', []):
+            action = self.get_action_by_id(action_id)
+            if action is None:
+                continue
+            yield action
+
+    def get_all_alarms(self):
+        return self._alarms.all()
+
+    def get_all_actions(self):
+        return self._actions.all()
+
+    def get_all_alarms_expanded(self):
+        for alarm in self.get_all_alarms():
+            for action in self.get_actions_by_alarm(alarm):
+                yield alarm, action
+
+    def add_event(self, alarm, actions):
+        action_ids = [self.add_action(a) for a in actions]
+        alarm['actions'] = action_ids
+        return self._alarms.insert(alarm)
+
+    def add_action(self, action):
+        return self._actions.insert(action)
+
+    def add_alarm(self, alarm):
+        return self.add_event(alarm, [])
+
+    def update_alarm(self, alarmid, new_fields={}):
+        return self._alarms.update(new_fields, eids=[alarmid])
+
+    def update_action(self, actionid, new_fields={}):
+        return self._actions.update(new_fields, eids=[actionid])
+
+    def delete_alarm(self, alarmid):
+        return self._alarms.remove(eids=[alarmid])
+
+    def delete_action(self, actionid):
+        return self._actions.remove(eids=[actionid])

+ 2 - 62
larigira/event.py

@@ -2,77 +2,17 @@ from __future__ import print_function
 from gevent import monkey
 monkey.patch_all(subprocess=True)
 import logging
-logging.getLogger('mpd').setLevel(logging.WARNING)
 from datetime import datetime, timedelta
 
 import gevent
 from gevent.queue import Queue
-from tinydb import TinyDB
 
 from .eventutils import ParentedLet, Timer
 from .timegen import timegenerate
 from .audiogen import audiogenerate
+from .db import EventModel
 
-
-class EventModel(object):
-    def __init__(self, uri):
-        self.uri = uri
-        self.db = None
-        self.reload()
-
-    def reload(self):
-        if self.db is not None:
-            self.db.close()
-        self.db = TinyDB(self.uri, indent=2)
-        self.actions = self.db.table('actions')
-        self.alarms = self.db.table('alarms')
-
-    def get_action_by_id(self, action_id):
-        return self.actions.get(eid=action_id)
-
-    def get_alarm_by_id(self, alarm_id):
-        return self.alarms.get(eid=alarm_id)
-
-    def get_actions_by_alarm(self, alarm):
-        for action_id in alarm.get('actions', []):
-            action = self.get_action_by_id(action_id)
-            if action is None: continue
-            yield action
-
-    def get_all_alarms(self):
-        return self.alarms.all()
-
-    def get_all_actions(self):
-        return self.actions.all()
-
-    def get_all_alarms_expanded(self):
-        for alarm in self.get_all_alarms():
-            for action in self.get_actions_by_alarm(alarm):
-                yield alarm, action
-
-    def add_event(self, alarm, actions):
-        action_ids = [self.add_action(a) for a in actions]
-        alarm['actions'] = action_ids
-        return self.alarms.insert(alarm)
-
-    def add_action(self, action):
-        return self.actions.insert(action)
-
-    def add_alarm(self, alarm):
-        return self.add_event(alarm, [])
-
-    def update_alarm(self, alarmid, new_fields={}):
-        return self.alarms.update(new_fields, eids=[alarmid])
-
-    def update_action(self, actionid, new_fields={}):
-        return self.actions.update(new_fields, eids=[actionid])
-
-    def delete_alarm(self, alarmid):
-        return self.alarms.remove(eids=[alarmid])
-
-    def delete_action(self, actionid):
-        return self.actions.remove(eids=[actionid])
-
+logging.getLogger('mpd').setLevel(logging.WARNING)
 
 class Monitor(ParentedLet):
     '''

+ 1 - 1
larigira/event_manage.py

@@ -2,7 +2,7 @@ from __future__ import print_function
 import argparse
 import json
 
-from .event import EventModel
+from .db import EventModel
 from .config import get_conf
 
 

+ 2 - 2
larigira/tests/test_db.py

@@ -6,7 +6,7 @@ monkey.patch_all(subprocess=True)
 
 import pytest
 
-from larigira.event import EventModel
+from larigira.db import EventModel
 
 
 @pytest.yield_fixture
@@ -37,7 +37,7 @@ def test_add_multiple_alarms(db):
                              dict(kind='foo', a=3)])
     assert len(db.get_all_alarms()) == 1
     assert db.get_alarm_by_id(alarm_id) is not None
-    assert len(db.actions.all()) == 2
+    assert len(db.get_all_actions()) == 2
     assert len(tuple(db.get_actions_by_alarm(
         db.get_alarm_by_id(alarm_id)))) == 2