Made startup/app extensions static

This commit is contained in:
2025-09-17 20:54:21 +02:00
parent 41087a838b
commit ab7ff7da93
8 changed files with 28 additions and 36 deletions

View File

@@ -4,8 +4,7 @@ from cpl.dependency import ServiceProviderABC
class ApplicationExtensionABC(ABC): class ApplicationExtensionABC(ABC):
@abstractmethod
def __init__(self): ...
@staticmethod
@abstractmethod @abstractmethod
def run(self, services: ServiceProviderABC): ... def run(services: ServiceProviderABC): ...

View File

@@ -6,15 +6,14 @@ from cpl.dependency.service_collection import ServiceCollection
class StartupABC(ABC): class StartupABC(ABC):
r"""ABC for the startup class""" r"""ABC for the startup class"""
@staticmethod
@abstractmethod @abstractmethod
def __init__(self): ... def configure_configuration():
@abstractmethod
def configure_configuration(self):
r"""Creates configuration of application""" r"""Creates configuration of application"""
@staticmethod
@abstractmethod @abstractmethod
def configure_services(self, service: ServiceCollection): def configure_services(service: ServiceCollection):
r"""Creates service provider r"""Creates service provider
Parameter: Parameter:

View File

@@ -6,15 +6,14 @@ from cpl.dependency import ServiceCollection
class StartupExtensionABC(ABC): class StartupExtensionABC(ABC):
r"""ABC for startup extension classes""" r"""ABC for startup extension classes"""
@staticmethod
@abstractmethod @abstractmethod
def __init__(self): ... def configure_configuration():
@abstractmethod
def configure_configuration(self):
r"""Creates configuration of application""" r"""Creates configuration of application"""
@staticmethod
@abstractmethod @abstractmethod
def configure_services(self, services: ServiceCollection): def configure_services(services: ServiceCollection):
r"""Creates service provider r"""Creates service provider
Parameter: Parameter:
services: :class:`cpl.dependency.service_collection` services: :class:`cpl.dependency.service_collection`

View File

@@ -35,7 +35,7 @@ class ApplicationBuilder:
return self._services.build() return self._services.build()
def use_startup(self, startup: Type[StartupABC]) -> "ApplicationBuilder": def use_startup(self, startup: Type[StartupABC]) -> "ApplicationBuilder":
self._startup = startup() self._startup = startup
return self return self
def use_extension( def use_extension(
@@ -50,8 +50,7 @@ class ApplicationBuilder:
return self return self
def build(self) -> ApplicationABC: def build(self) -> ApplicationABC:
for ex in self._startup_extensions: for extension in self._startup_extensions:
extension = ex()
Host.run(extension.configure_configuration) Host.run(extension.configure_configuration)
Host.run(extension.configure_services, self._services) Host.run(extension.configure_services, self._services)
@@ -59,8 +58,7 @@ class ApplicationBuilder:
Host.run(self._startup.configure_configuration) Host.run(self._startup.configure_configuration)
Host.run(self._startup.configure_services, self._services) Host.run(self._startup.configure_services, self._services)
for ex in self._app_extensions: for extension in self._app_extensions:
extension = ex()
Host.run(extension.run, self.service_provider) Host.run(extension.run, self.service_provider)
return self._app(self.service_provider) return self._app(self.service_provider)

View File

@@ -16,15 +16,15 @@ from model.user_dao import UserDao
class Startup(StartupABC): class Startup(StartupABC):
def __init__(self):
StartupABC.__init__(self)
async def configure_configuration(self): @staticmethod
async def configure_configuration():
Configuration.add_json_file(f"appsettings.json") 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_environment()}.json")
Configuration.add_json_file(f"appsettings.{Environment.get_host_name()}.json", optional=True) Configuration.add_json_file(f"appsettings.{Environment.get_host_name()}.json", optional=True)
async def configure_services(self, services: ServiceCollection): @staticmethod
async def configure_services(services: ServiceCollection):
services.add_module(mysql) services.add_module(mysql)
services.add_module(auth) services.add_module(auth)
services.add_module(permission) services.add_module(permission)

View File

@@ -1,22 +1,22 @@
from cpl import mail from cpl import mail
from cpl.application.abc import StartupABC from cpl.application.abc import StartupABC
from cpl.core.configuration import Configuration from cpl.core.configuration import Configuration
from cpl.dependency import ServiceCollection, ServiceProviderABC
from cpl.core.environment import Environment from cpl.core.environment import Environment
from cpl.core.pipes import IPAddressPipe from cpl.core.pipes import IPAddressPipe
from cpl.dependency import ServiceCollection
from test_service import TestService from test_service import TestService
class Startup(StartupABC): class Startup(StartupABC):
def __init__(self):
StartupABC.__init__(self)
def configure_configuration(selft): @staticmethod
def configure_configuration():
Configuration.add_json_file(f"appsettings.json") 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_environment()}.json")
Configuration.add_json_file(f"appsettings.{Environment.get_host_name()}.json", optional=True) Configuration.add_json_file(f"appsettings.{Environment.get_host_name()}.json", optional=True)
def configure_services(self, services: ServiceCollection): @staticmethod
def configure_services(services: ServiceCollection):
services.add_logging() services.add_logging()
services.add_module(mail) services.add_module(mail)
services.add_transient(IPAddressPipe) services.add_transient(IPAddressPipe)

View File

@@ -4,8 +4,7 @@ from cpl.dependency import ServiceProviderABC
class TestExtension(ApplicationExtensionABC): class TestExtension(ApplicationExtensionABC):
def __init__(self):
ApplicationExtensionABC.__init__(self)
def run(self, services: ServiceProviderABC): @staticmethod
def run(services: ServiceProviderABC):
Console.write_line("Hello World from App Extension") Console.write_line("Hello World from App Extension")

View File

@@ -1,16 +1,14 @@
from cpl.application.abc import StartupExtensionABC from cpl.application.abc import StartupExtensionABC
from cpl.core.configuration import Configuration
from cpl.core.console import Console from cpl.core.console import Console
from cpl.dependency import ServiceCollection from cpl.dependency import ServiceCollection
from cpl.core.environment import Environment
class TestStartupExtension(StartupExtensionABC): class TestStartupExtension(StartupExtensionABC):
def __init__(self):
StartupExtensionABC.__init__(self)
def configure_configuration(self): @staticmethod
def configure_configuration():
Console.write_line("config") Console.write_line("config")
def configure_services(self, services: ServiceCollection): @staticmethod
def configure_services(services: ServiceCollection):
Console.write_line("services") Console.write_line("services")