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

1"""Module for defining presenters for JSON:API author documents.""" 

2 

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 

11 

12 

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.""" 

18 

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)))