Coverage for tortoise_serializer/resolver.py: 56%
9 statements
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-17 19:39 +0200
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-17 19:39 +0200
1from typing import Any, Awaitable, Callable
4def resolver(field_name: str):
5 """Decorator to mark a method as a resolver for one field.
6 The decorated method MUST be defined within a Serializer class.
8 Args:
9 field_name: The name of the field this method resolves.
11 Example:
12 ```python
13 @resolver("full_name")
14 def resolve_full_name(cls, instance: Model, context: Any) -> str:
15 return f"{instance.first_name} {instance.last_name}"
16 ```
17 """
19 def decorator(
20 func: Callable[..., Awaitable[Any]],
21 ) -> Callable[..., Awaitable[Any]]:
22 if not hasattr(func, "_resolver_fields"):
23 func._resolver_fields = []
25 func._resolver_fields.append(field_name)
27 # Apply classmethod decorator effect
28 func = classmethod(func)
29 return func
31 return decorator