Merge pull request #30 from BryanSalas/master
[rainbowstream.git] / rainbowstream / db.py
index fabc3a4c26bcee11f65cbc4fcd4211b7079fccaf..e9f2ccc710ec14622213105e0de03ed4ccadf22a 100644 (file)
@@ -1,6 +1,7 @@
 import os
 from sqlalchemy import create_engine
 from sqlalchemy.orm import sessionmaker
+from sqlalchemy.pool import StaticPool
 from .table_def import *
 
 
@@ -9,9 +10,13 @@ class RainbowDB():
     engine = None
 
     def __init__(self):
-        if not os.path.isfile('rainbow.db'):
-            init_db()
-        self.engine = create_engine('sqlite:///rainbow.db', echo=False)
+        """
+        Init DB
+        """
+        if os.path.isfile('rainbow.db'):
+            os.system('rm -rf rainbow.db')
+        init_db()
+        self.engine = create_engine('sqlite:///rainbow.db', echo=False, connect_args={'check_same_thread':False}, poolclass=StaticPool)
 
     def tweet_store(self, tweet_id):
         """
@@ -19,8 +24,8 @@ class RainbowDB():
         """
         Session = sessionmaker(bind=self.engine)
         session = Session()
-        m = Tweet(tweet_id)
-        session.add(m)
+        t = Tweet(tweet_id)
+        session.add(t)
         session.commit()
 
     def rainbow_to_tweet_query(self, rid):
@@ -68,3 +73,83 @@ class RainbowDB():
         session = Session()
         res = session.query(Message).filter_by(message_id=mid).all()
         return res
+
+    def theme_store(self, theme_name):
+        """
+        Store theme
+        """
+        Session = sessionmaker(bind=self.engine)
+        session = Session()
+        th = Theme(theme_name)
+        session.add(th)
+        session.commit()
+
+    def theme_update(self, theme_name):
+        """
+        Update theme
+        """
+        Session = sessionmaker(bind=self.engine)
+        session = Session()
+        res = session.query(Theme).all()
+        for r in res:
+            r.theme_name = theme_name
+        session.commit()
+
+    def theme_query(self):
+        """
+        Query theme
+        """
+        Session = sessionmaker(bind=self.engine)
+        session = Session()
+        res = session.query(Theme).all()
+        return res
+
+    def semaphore_store(self, lock, pause):
+        """
+        Store semaphore lock
+        """
+        Session = sessionmaker(bind=self.engine)
+        session = Session()
+        th = Semaphore(lock, pause)
+        session.add(th)
+        session.commit()
+
+    def semaphore_update_lock(self, lock):
+        """
+        Update semaphore lock
+        """
+        Session = sessionmaker(bind=self.engine)
+        session = Session()
+        res = session.query(Semaphore).all()
+        for r in res:
+            r.lock = lock
+        session.commit()
+
+    def semaphore_update_pause(self, pause):
+        """
+        Update semaphore pause
+        """
+        Session = sessionmaker(bind=self.engine)
+        session = Session()
+        res = session.query(Semaphore).all()
+        for r in res:
+            r.pause = pause
+        session.commit()
+
+    def semaphore_query_lock(self):
+        """
+        Query semaphore lock
+        """
+        Session = sessionmaker(bind=self.engine)
+        session = Session()
+        res = session.query(Semaphore).all()
+        return res[0].lock
+
+    def semaphore_query_pause(self):
+        """
+        Query semaphore pause
+        """
+        Session = sessionmaker(bind=self.engine)
+        session = Session()
+        res = session.query(Semaphore).all()
+        return res[0].pause