summaryrefslogtreecommitdiff
path: root/include/py/homekit/database/__init__.py
blob: c958959c8b647e401899beffa89c87b48d203a9d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import importlib

__all__ = [
    'get_mysql',
    'mysql_now',
    'get_clickhouse',
    'SimpleState',

    'MySQLHomeDatabase',
    'SensorsDatabase',
    'InverterDatabase',
    'BotsDatabase'
]


def __getattr__(name: str):
    if name in __all__:
        ln = name.lower()
        if 'mysql' in ln:
            file = 'mysql'
        elif 'clickhouse' in ln:
            file = 'clickhouse'
        elif name.endswith('Database'):
            file = name[:-8].lower()
        else:
            file = 'simple_state'

        module = importlib.import_module(f'.{file}', __name__)
        return getattr(module, name)

    raise AttributeError(f"module {__name__!r} has no attribute {name!r}")