Queer European MD passionate about IT
Browse Source

Method to create views in database added

Davte 4 years ago
parent
commit
a24d1b3ef5
1 changed files with 22 additions and 0 deletions
  1. 22 0
      davtelepot/database.py

+ 22 - 0
davtelepot/database.py

@@ -49,3 +49,25 @@ class ObjectWithDatabase(object):
     def db(self):
         """Return the dataset.Database instance related to `self`."""
         return self._database
+
+    def create_views(self, views, overwrite=False):
+        """Take a list of `views` and add them to bot database.
+
+        Overwrite existing views if `overwrite` is set to True.
+        Each element of this list should have
+        - a `name` field
+        - a `query field`
+        """
+        with self.db as db:
+            for view in views:
+                try:
+                    if overwrite:
+                        db.query(
+                            f"DROP VIEW IF EXISTS {view['name']}"
+                        )
+                    db.query(
+                        f"CREATE VIEW IF NOT EXISTS {view['name']}"
+                        f"AS {view['query']}"
+                    )
+                except Exception as e:
+                    logging.error(f"{e}")