from typing import Optional from cpl_core.application import ApplicationABC from cpl_core.configuration import ConfigurationABC from cpl_core.console import Console from cpl_core.dependency_injection import ServiceProviderABC from cpl_core.logging import LoggerABC from model.user_repo_abc import UserRepoABC from model.user_repo import UserRepo class Application(ApplicationABC): def __init__(self, config: ConfigurationABC, services: ServiceProviderABC): ApplicationABC.__init__(self, config, services) self._logger: Optional[LoggerABC] = None def configure(self): self._logger = self._services.get_service(LoggerABC) def main(self): self._logger.header(f"{self._configuration.environment.application_name}:") self._logger.debug(__name__, f"Host: {self._configuration.environment.host_name}") self._logger.debug(__name__, f"Environment: {self._configuration.environment.environment_name}") self._logger.debug(__name__, f"Customer: {self._configuration.environment.customer}") user_repo: UserRepo = self._services.get_service(UserRepoABC) if len(user_repo.get_users()) == 0: user_repo.add_test_user() Console.write_line("Users:") for user in user_repo.get_users(): Console.write_line(user.UserId, user.Name, user.City) Console.write_line("Cities:") for city in user_repo.get_cities(): Console.write_line(city.CityId, city.Name, city.ZIP)