44 lines
1.7 KiB
Python
44 lines
1.7 KiB
Python
from cpl_core.application import StartupABC
|
|
from cpl_core.configuration import ConfigurationABC
|
|
from cpl_core.database import DatabaseSettings
|
|
from cpl_core.dependency_injection import ServiceCollectionABC, ServiceProviderABC
|
|
from cpl_core.environment import ApplicationEnvironmentABC
|
|
from cpl_core.logging import Logger, LoggerABC
|
|
|
|
from model.db_context import DBContext
|
|
from model.user_repo import UserRepo
|
|
from model.user_repo_abc import UserRepoABC
|
|
|
|
|
|
class Startup(StartupABC):
|
|
def __init__(self):
|
|
StartupABC.__init__(self)
|
|
|
|
self._configuration = None
|
|
|
|
def configure_configuration(
|
|
self, configuration: ConfigurationABC, environment: ApplicationEnvironmentABC
|
|
) -> ConfigurationABC:
|
|
configuration.add_environment_variables("PYTHON_")
|
|
configuration.add_environment_variables("CPL_")
|
|
configuration.add_json_file(f"appsettings.json")
|
|
configuration.add_json_file(f"appsettings.{configuration.environment.environment_name}.json")
|
|
configuration.add_json_file(f"appsettings.{configuration.environment.host_name}.json", optional=True)
|
|
|
|
self._configuration = configuration
|
|
|
|
return configuration
|
|
|
|
def configure_services(
|
|
self, services: ServiceCollectionABC, environment: ApplicationEnvironmentABC
|
|
) -> ServiceProviderABC:
|
|
# Create and connect to database
|
|
self._configuration.parse_console_arguments(services)
|
|
db_settings: DatabaseSettings = self._configuration.get_configuration(DatabaseSettings)
|
|
services.add_db_context(DBContext, db_settings)
|
|
|
|
services.add_singleton(UserRepoABC, UserRepo)
|
|
|
|
services.add_singleton(LoggerABC, Logger)
|
|
return services.build_service_provider()
|