from cpl import auth from cpl.application.abc.startup_abc import StartupABC from cpl.auth import permission from cpl.auth.auth_module import AuthModule from cpl.auth.permission.permission_module import PermissionsModule from cpl.core.configuration import Configuration from cpl.core.environment import Environment from cpl.core.log import Logger, LoggerABC from cpl.database import mysql, DatabaseModule from cpl.database.abc.data_access_object_abc import DataAccessObjectABC from cpl.database.mysql.mysql_module import MySQLModule from cpl.dependency import ServiceCollection from model.city_dao import CityDao from model.user_dao import UserDao class Startup(StartupABC): @staticmethod async def configure_configuration(): Configuration.add_json_file(f"appsettings.json") Configuration.add_json_file(f"appsettings.{Environment.get_environment()}.json") Configuration.add_json_file(f"appsettings.{Environment.get_host_name()}.json", optional=True) @staticmethod async def configure_services(services: ServiceCollection): services.add_module(MySQLModule) services.add_module(DatabaseModule) services.add_module(AuthModule) services.add_module(PermissionsModule) services.add_transient(DataAccessObjectABC, UserDao) services.add_transient(DataAccessObjectABC, CityDao) services.add_singleton(LoggerABC, Logger)