From 2f35bc8c29686775b9ef61499047b4e8eeeefad8 Mon Sep 17 00:00:00 2001
From: Lluis Gifre <lluis.gifre@cttc.es>
Date: Tue, 27 Jul 2021 19:55:52 +0200
Subject: [PATCH] Add database/Factory.py missing file

---
 src/common/database/Factory.py | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)
 create mode 100644 src/common/database/Factory.py

diff --git a/src/common/database/Factory.py b/src/common/database/Factory.py
new file mode 100644
index 000000000..9edd9ac25
--- /dev/null
+++ b/src/common/database/Factory.py
@@ -0,0 +1,31 @@
+import logging, os
+from enum import Enum
+from .inmemory.InMemoryDatabase import InMemoryDatabase
+from .redis.RedisDatabase import RedisDatabase
+
+LOGGER = logging.getLogger(__name__)
+
+class DatabaseEngineEnum(Enum):
+    INMEMORY = 'inmemory'
+    REDIS = 'redis'
+    #MONGO = 'mongo'
+    #RETHINK = 'rethink'
+    #ETCD = 'etcd'
+
+ENGINES = {
+    DatabaseEngineEnum.INMEMORY.value: InMemoryDatabase,
+    DatabaseEngineEnum.REDIS.value: RedisDatabase,
+    #DatabaseEngineEnum.MONGO.value: MongoDatabase,
+    #DatabaseEngineEnum.RETHINK.value: RethinkDatabase,
+    #DatabaseEngineEnum.ETCD.value: EtcdDatabase,
+}
+
+DEFAULT_DB_ENGINE = DatabaseEngineEnum.INMEMORY
+
+def get_database(engine=None, **parameters):
+    if engine is None: engine = os.environ.get('DB_ENGINE', DEFAULT_DB_ENGINE)
+    if(isinstance(engine, DatabaseEngineEnum)): engine = engine.value
+    LOGGER.info('Selected Database Engine: {}'.format(engine))
+    engine_class = ENGINES.get(engine)
+    if engine_class is None: raise Exception('Unsupported Engine({})'.format(engine))
+    return engine_class(**parameters)
-- 
GitLab