Added api & route handling
Some checks failed
Build on push / prepare (push) Successful in 9s
Build on push / core (push) Successful in 19s
Build on push / query (push) Successful in 19s
Build on push / dependency (push) Successful in 17s
Build on push / application (push) Successful in 15s
Build on push / database (push) Successful in 18s
Build on push / mail (push) Successful in 19s
Build on push / translation (push) Successful in 23s
Build on push / auth (push) Successful in 16s
Build on push / api (push) Failing after 14s

This commit is contained in:
2025-09-19 21:03:33 +02:00
parent 1a67318091
commit ddc62dfb9a
34 changed files with 568 additions and 42 deletions

View File

@@ -77,7 +77,7 @@ class ServiceProvider(ServiceProviderABC):
return implementations
def _build_by_signature(self, sig: Signature, origin_service_type: type) -> list[R]:
def _build_by_signature(self, sig: Signature, origin_service_type: type=None) -> list[R]:
params = []
for param in sig.parameters.items():
parameter = param[1]

View File

@@ -1,6 +1,6 @@
import functools
from abc import abstractmethod, ABC
from inspect import Signature, signature
from inspect import Signature, signature, iscoroutinefunction
from typing import Optional, Type
from cpl.core.typing import T, R
@@ -36,7 +36,7 @@ class ServiceProviderABC(ABC):
return cls._provider.get_services(instance_type, *args, **kwargs)
@abstractmethod
def _build_by_signature(self, sig: Signature, origin_service_type: type) -> list[R]: ...
def _build_by_signature(self, sig: Signature, origin_service_type: type=None) -> list[R]: ...
@abstractmethod
def _build_service(self, service_type: type, *args, **kwargs) -> object:
@@ -115,11 +115,13 @@ class ServiceProviderABC(ABC):
return functools.partial(cls.inject)
@functools.wraps(f)
def inner(*args, **kwargs):
async def inner(*args, **kwargs):
if cls._provider is None:
raise Exception(f"{cls.__name__} not build!")
injection = [x for x in cls._provider._build_by_signature(signature(f)) if x is not None]
if iscoroutinefunction(f):
return await f(*args, *injection, **kwargs)
return f(*args, *injection, **kwargs)
return inner