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