Commit e859da61 authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

Merge branch 'feat/context-service' into 'develop'

Add database/Factory.py missing file

See merge request teraflow-h2020/controller!6
parents eeee014d 2f35bc8c
Loading
Loading
Loading
Loading
+31 −0
Original line number Diff line number Diff line
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)