95 lines
3.3 KiB
Python
95 lines
3.3 KiB
Python
import traceback
|
|
from typing import Optional
|
|
|
|
from cpl_core.configuration.configuration_model_abc import ConfigurationModelABC
|
|
from cpl_core.console.console import Console
|
|
from cpl_core.console.foreground_color_enum import ForegroundColorEnum
|
|
from cpl_core.database.database_settings_name_enum import DatabaseSettingsNameEnum
|
|
|
|
|
|
class DatabaseSettings(ConfigurationModelABC):
|
|
r"""Represents settings for the database connection"""
|
|
|
|
def __init__(self):
|
|
ConfigurationModelABC.__init__(self)
|
|
|
|
self._host: Optional[str] = None
|
|
self._port: Optional[int] = None
|
|
self._user: Optional[str] = None
|
|
self._password: Optional[str] = None
|
|
self._databse: Optional[str] = None
|
|
self._charset: Optional[str] = None
|
|
self._use_unicode: Optional[bool] = None
|
|
self._buffered: Optional[bool] = None
|
|
self._auth_plugin: Optional[str] = None
|
|
|
|
@property
|
|
def host(self) -> Optional[str]:
|
|
return self._host
|
|
|
|
@property
|
|
def port(self) -> Optional[int]:
|
|
return self._port
|
|
|
|
@property
|
|
def user(self) -> Optional[str]:
|
|
return self._user
|
|
|
|
@property
|
|
def password(self) -> Optional[str]:
|
|
return self._password
|
|
|
|
@property
|
|
def database(self) -> Optional[str]:
|
|
return self._databse
|
|
|
|
@property
|
|
def charset(self) -> Optional[str]:
|
|
return self._charset
|
|
|
|
@property
|
|
def use_unicode(self) -> Optional[bool]:
|
|
return self._use_unicode
|
|
|
|
@property
|
|
def buffered(self) -> Optional[bool]:
|
|
return self._buffered
|
|
|
|
@property
|
|
def auth_plugin(self) -> Optional[str]:
|
|
return self._auth_plugin
|
|
|
|
def from_dict(self, settings: dict):
|
|
r"""Sets attributes from given dict
|
|
|
|
Parameter
|
|
---------
|
|
settings: :class:`dict`
|
|
"""
|
|
try:
|
|
self._host = settings[DatabaseSettingsNameEnum.host.value]
|
|
if DatabaseSettingsNameEnum.port.value in settings:
|
|
self._port = settings[DatabaseSettingsNameEnum.port.value]
|
|
else:
|
|
self._port = 3306
|
|
self._user = settings[DatabaseSettingsNameEnum.user.value]
|
|
self._password = settings[DatabaseSettingsNameEnum.password.value]
|
|
self._databse = settings[DatabaseSettingsNameEnum.database.value]
|
|
|
|
if DatabaseSettingsNameEnum.charset.value in settings:
|
|
self._charset = settings[DatabaseSettingsNameEnum.charset.value]
|
|
|
|
if DatabaseSettingsNameEnum.buffered.value in settings:
|
|
self._use_unicode = bool(settings[DatabaseSettingsNameEnum.use_unicode.value])
|
|
|
|
if DatabaseSettingsNameEnum.buffered.value in settings:
|
|
self._buffered = bool(settings[DatabaseSettingsNameEnum.buffered.value])
|
|
|
|
if DatabaseSettingsNameEnum.auth_plugin.value in settings:
|
|
self._auth_plugin = settings[DatabaseSettingsNameEnum.auth_plugin.value]
|
|
except Exception as e:
|
|
Console.set_foreground_color(ForegroundColorEnum.red)
|
|
Console.write_line(f'[ ERROR ] [ {__name__} ]: Reading error in {type(self).__name__} settings')
|
|
Console.write_line(f'[ EXCEPTION ] [ {__name__} ]: {e} -> {traceback.format_exc()}')
|
|
Console.set_foreground_color(ForegroundColorEnum.default)
|