controllers

Controllers for the tags domain.

class app.domain.tags.controllers.TagDTO(asgi_connection: ASGIConnection)[source]

Bases: Tag'>]

Create an AbstractDTOFactory type.

Parameters:

asgi_connection – A ASGIConnection instance.

config: ClassVar[SQLAlchemyDTOConfig] = SQLAlchemyDTOConfig(exclude={'created_at', 'teams', 'updated_at'}, include=set(), rename_fields={}, rename_strategy='camel', max_nested_depth=2, partial=False, underscore_fields_private=True, experimental_codegen_backend=None, forbid_unknown_fields=False, include_implicit_fields=True)

Config objects to define properties of the DTO.

class app.domain.tags.controllers.TagCreateDTO(asgi_connection: ASGIConnection)[source]

Bases: Tag'>]

Create an AbstractDTOFactory type.

Parameters:

asgi_connection – A ASGIConnection instance.

config: ClassVar[SQLAlchemyDTOConfig] = SQLAlchemyDTOConfig(exclude={'created_at', 'teams', 'id', 'updated_at'}, include=set(), rename_fields={}, rename_strategy='camel', max_nested_depth=2, partial=False, underscore_fields_private=True, experimental_codegen_backend=None, forbid_unknown_fields=False, include_implicit_fields=True)

Config objects to define properties of the DTO.

class app.domain.tags.controllers.TagUpdateDTO(asgi_connection: ASGIConnection)[source]

Bases: Tag'>]

Create an AbstractDTOFactory type.

Parameters:

asgi_connection – A ASGIConnection instance.

config: ClassVar[SQLAlchemyDTOConfig] = SQLAlchemyDTOConfig(exclude={'created_at', 'teams', 'id', 'updated_at'}, include=set(), rename_fields={}, rename_strategy='camel', max_nested_depth=2, partial=True, underscore_fields_private=True, experimental_codegen_backend=None, forbid_unknown_fields=False, include_implicit_fields=True)

Config objects to define properties of the DTO.

class app.domain.tags.controllers.TagController(owner: Router)[source]

Bases: Controller

Handles the interactions within the Tag objects.

We use a DTO in this controller purely as an example of how to integrate it with SQLAlchemy.

You can use either pattern you see in this repository as an example.

Initialize a controller.

Should only be called by routers as part of controller registration.

Parameters:

owner – An instance of Router

guards: Sequence[Guard] | None

A sequence of Guard callables.

dependencies: Dependencies | None

A string keyed dictionary of dependency Provider instances.

tags: Sequence[str] | None

A sequence of string tags that will be appended to the schema of all route handlers under the controller.

return_dto: type[AbstractDTO] | None | EmptyType

AbstractDTO to use for serializing outbound response data.

after_request: AfterRequestHookHandler | None

A sync or async function executed before a Request is passed to any route handler.

If this function returns a value, the request will not reach the route handler, and instead this value will be used.

after_response: AfterResponseHookHandler | None

A sync or async function called after the response has been awaited.

It receives the Request instance and should not return any values.

before_request: BeforeRequestHookHandler | None

A sync or async function called immediately before calling the route handler.

It receives the Request instance and any non-None return value is used for the response, bypassing the route handler.

cache_control: CacheControlHeader | None

A CacheControlHeader header to add to route handlers of this controller.

Can be overridden by route handlers.

dto: type[AbstractDTO] | None | EmptyType

AbstractDTO to use for (de)serializing and validation of request data.

etag: ETag | None

An etag header of type ETag to add to route handlers of this controller.

Can be overridden by route handlers.

exception_handlers: ExceptionHandlersMap | None

A map of handler functions to status codes and/or exception types.

include_in_schema: bool | EmptyType

A boolean flag dictating whether the route handler should be documented in the OpenAPI schema

middleware: Sequence[Middleware] | None

A sequence of Middleware.

opt: Mapping[str, Any] | None

A string key mapping of arbitrary values that can be accessed in Guards or wherever you have access to Request or ASGI Scope.

owner: Router

The Router or Litestar app that owns the controller.

This value is set internally by Litestar and it should not be set when subclassing the controller.

parameters: ParametersMap | None

A mapping of Parameter definitions available to all application paths.

path: str

A path fragment for the controller.

All route handlers under the controller will have the fragment appended to them. If not set it defaults to /.

request_class: type[Request] | None

A custom subclass of Request to be used as the default request for all route handlers under the controller.

request_max_body_size: int | None | EmptyType

Maximum allowed size of the request body in bytes. If this size is exceeded, a ‘413 - Request Entity Too Large’ error response is returned.

response_class: type[Response] | None

A custom subclass of Response to be used as the default response for all route handlers under the controller.

response_cookies: ResponseCookies | None

A list of Cookie instances.

response_headers: ResponseHeaders | None

A string keyed dictionary mapping ResponseHeader instances.

security: Sequence[SecurityRequirement] | None

A sequence of dictionaries that to the schema of all route handlers under the controller.

signature_namespace: dict[str, Any]

A mapping of names to types for use in forward reference resolution during signature modeling.

signature_types: Sequence[Any]

A sequence of types for use in forward reference resolution during signature modeling.

These types will be added to the signature namespace using their __name__ attribute.

type_decoders: TypeDecodersSequence | None

A sequence of tuples, each composed of a predicate testing for type identity and a msgspec hook for deserialization.

type_encoders: TypeEncodersMap | None

A mapping of types to callables that transform them into types supported for serialization.

websocket_class: type[WebSocket] | None

A custom subclass of WebSocket to be used as the default websocket for all route handlers under the controller.