46 lines
2.2 KiB
Python
46 lines
2.2 KiB
Python
from cpl.application.application_runtime_abc import ApplicationRuntimeABC
|
|
from cpl.application.startup_abc import StartupABC
|
|
from cpl.configuration.configuration_abc import ConfigurationABC
|
|
from cpl.database.context.database_context import DatabaseContext
|
|
from cpl.database.database_settings import DatabaseSettings
|
|
from cpl.dependency_injection.service_collection_abc import ServiceCollectionABC
|
|
from cpl.dependency_injection.service_provider_abc import ServiceProviderABC
|
|
from cpl.logging.logger_service import Logger
|
|
from cpl.logging.logger_abc import LoggerABC
|
|
from cpl.mailing.email_client_service import EMailClient
|
|
from cpl.mailing.email_client_abc import EMailClientABC
|
|
from cpl.utils.credential_manager import CredentialManager
|
|
from tests.custom.general.test_service import TestService
|
|
|
|
|
|
class Startup(StartupABC):
|
|
|
|
def __init__(self, config: ConfigurationABC, runtime: ApplicationRuntimeABC, services: ServiceCollectionABC):
|
|
StartupABC.__init__(self)
|
|
|
|
self._configuration = config
|
|
self._application_runtime = runtime
|
|
self._services = services
|
|
|
|
def configure_configuration(self) -> ConfigurationABC:
|
|
self._configuration.add_environment_variables('PYTHON_')
|
|
self._configuration.add_environment_variables('CPL_')
|
|
self._configuration.add_console_arguments()
|
|
self._configuration.add_json_file(f'appsettings.json')
|
|
self._configuration.add_json_file(f'appsettings.{self._configuration.environment.environment_name}.json')
|
|
self._configuration.add_json_file(f'appsettings.{self._configuration.environment.host_name}.json', optional=True)
|
|
|
|
return self._configuration
|
|
|
|
def configure_services(self) -> ServiceProviderABC:
|
|
# Create and connect to database
|
|
# db_settings: DatabaseSettings = self._configuration.get_configuration(DatabaseSettings)
|
|
# self._services.add_db_context(DatabaseContext)
|
|
# db.connect(CredentialManager.build_string(db_settings.connection_string, db_settings.credentials))
|
|
|
|
self._services.add_singleton(LoggerABC, Logger)
|
|
self._services.add_singleton(EMailClientABC, EMailClient)
|
|
self._services.add_singleton(TestService)
|
|
|
|
return self._services.build_service_provider()
|