-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconnection_registry.py
More file actions
40 lines (34 loc) · 1.81 KB
/
connection_registry.py
File metadata and controls
40 lines (34 loc) · 1.81 KB
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
32
33
34
35
36
37
38
39
from dpl.core.connections import ConnectionFactory
class ConnectionRegistry(object):
"""
Класс (Singleton по задумке), который хранит список фабрик
для всех импортированных соединений
"""
__reg = dict()
@classmethod
def register_factory(cls, alias: str, factory: ConnectionFactory) -> None:
"""
Реестрация фабрики подключений
:param alias: псевдоним типа подключения, который используется в конфиг-файлах
:param factory: экземпляр фабрики
:return: None
"""
cls.__reg[alias] = factory
@classmethod
def resolve_factory(cls, alias: str, default=None) -> ConnectionFactory:
"""
Получение объекта-фабрики по псевдониму
:param alias: псевдоним типа подключения, который используется в конфиг-файлах
:param default: возвращаемое значение по умолчанию
:return: объект типа ConnectionFactory
"""
return cls.__reg.get(alias, default)
@classmethod
def remove_factory(cls, alias: str, default=None) -> ConnectionFactory:
"""
Удаление объекта-фабрики по псевдониму
:param alias: псевдоним типа подключения, который используется в конфиг-файлах
:param default: возвращаемое значение по умолчанию
:return: объект типа ConnectionFactory, удаленная фабрика
"""
return cls.__reg.pop(alias, default)