Coverage for src/kwai/api/v1/auth/authors/presenters.py: 100%
9 statements
« prev ^ index » next coverage.py v7.8.0, created at 2024-01-01 00:00 +0000
« prev ^ index » next coverage.py v7.8.0, created at 2024-01-01 00:00 +0000
1"""Module for defining presenters for JSON:API author documents."""
3from kwai.api.v1.auth.authors.schemas import (
4 AuthorDocument,
5 AuthorResource,
6 AuthorsDocument,
7)
8from kwai.core.domain.presenter import AsyncPresenter, IterableResult
9from kwai.core.json_api import JsonApiPresenter, Meta
10from kwai.modules.portal.domain.author import AuthorEntity
13class JsonApiAuthorsPresenter(
14 JsonApiPresenter[AuthorsDocument],
15 AsyncPresenter[IterableResult[AuthorEntity]],
16):
17 """A presenter that transform an iterable list of author entities into a JSON:API document."""
19 async def present(self, result: IterableResult[AuthorEntity]) -> None:
20 self._document = AuthorsDocument(
21 meta=Meta(count=result.count, offset=result.offset, limit=result.limit),
22 data=[],
23 )
24 async for author in result.iterator:
25 self._document.merge(AuthorDocument(data=AuthorResource.create(author)))