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):
@abstractmethod
def __init__(self): ...
@staticmethod
@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):
r"""ABC for the startup class"""
@staticmethod
@abstractmethod
def __init__(self): ...
@abstractmethod
def configure_configuration(self):
def configure_configuration():
r"""Creates configuration of application"""
@staticmethod
@abstractmethod
def configure_services(self, service: ServiceCollection):
def configure_services(service: ServiceCollection):
r"""Creates service provider
Parameter:

View File

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

View File

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

View File

@@ -16,15 +16,15 @@ from model.user_dao import UserDao
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.{Environment.get_environment()}.json")
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(auth)
services.add_module(permission)

View File

@@ -1,22 +1,22 @@
from cpl import mail
from cpl.application.abc import StartupABC
from cpl.core.configuration import Configuration
from cpl.dependency import ServiceCollection, ServiceProviderABC
from cpl.core.environment import Environment
from cpl.core.pipes import IPAddressPipe
from cpl.dependency import ServiceCollection
from test_service import TestService
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.{Environment.get_environment()}.json")
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_module(mail)
services.add_transient(IPAddressPipe)

View File

@@ -4,8 +4,7 @@ from cpl.dependency import ServiceProviderABC
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")

View File

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