Coverage for apps/kwai-api/src/kwai_api/v1/portal/news/endpoints.py: 100%

15 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2024-01-01 00:00 +0000

1"""Module for defining endpoints for portal/news.""" 

2 

3from fastapi import APIRouter, Depends 

4from kwai_bc_portal.get_news_items import GetNewsItems, GetNewsItemsCommand 

5from kwai_bc_portal.news.news_item_db_repository import NewsItemDbRepository 

6from kwai_core.db.database import Database 

7from kwai_core.json_api import PaginationModel 

8 

9from kwai_api.dependencies import create_database 

10from kwai_api.v1.portal.news.presenters import JsonApiNewsItemsPresenter 

11from kwai_api.v1.portal.news.schemas import NewsItemsDocument 

12 

13 

14router = APIRouter() 

15 

16 

17@router.get("/news") 

18async def get_news( 

19 pagination: PaginationModel = Depends(PaginationModel), 

20 db: Database = Depends(create_database), 

21) -> NewsItemsDocument: 

22 """Get news items for the portal. 

23 

24 Only promoted news items are returned for the portal. 

25 """ 

26 command = GetNewsItemsCommand( 

27 offset=pagination.offset or 0, limit=pagination.limit or 10, promoted=True 

28 ) 

29 presenter = JsonApiNewsItemsPresenter() 

30 await GetNewsItems(NewsItemDbRepository(db), presenter).execute(command) 

31 return presenter.get_document()