AI-News/backend/app/api/routes/home_featured.py
2025-12-04 10:04:21 +08:00

38 lines
1.3 KiB
Python

from typing import Optional
from fastapi import APIRouter, Depends
from app.api.dependencies.authentication import get_current_user_authorizer
from app.api.dependencies.database import get_repository
from app.db.repositories.articles import ArticlesRepository
from app.db.repositories.home_featured import HomeFeaturedRepository
from app.models.domain.users import User
from app.models.schemas.articles import ArticleForResponse, ListOfArticlesInResponse
router = APIRouter()
@router.get(
"/home-featured-articles",
response_model=ListOfArticlesInResponse,
name="home-featured:list",
)
async def list_home_featured_articles(
user: Optional[User] = Depends(get_current_user_authorizer(required=False)),
home_repo: HomeFeaturedRepository = Depends(get_repository(HomeFeaturedRepository)),
articles_repo: ArticlesRepository = Depends(get_repository(ArticlesRepository)),
) -> ListOfArticlesInResponse:
slugs = await home_repo.list_slugs()
articles = await articles_repo.list_articles_by_slugs(
slugs=slugs,
requested_user=user,
)
articles_for_response = [
ArticleForResponse.from_orm(article)
for article in articles
]
return ListOfArticlesInResponse(
articles=articles_for_response,
articles_count=len(articles_for_response),
)