"""
Services module for the pages app.
"""
from datetime import timedelta

from django.utils import timezone
from django.db.models import Count
from django.db.models import Prefetch

from feed.models import News
from cards.models import Card


def get_latest_news(days=7):
    last_week = timezone.now() - timedelta(days)
    news = (
        News.objects.filter(
            parent__isnull=True,
            created_at__gte=last_week,
        )
        .annotate(likes_count=Count("news_likes"))
        .prefetch_related(
            Prefetch(
                "user__cards",
                queryset=Card.objects.filter(default=True),
            ),
        )
        .prefetch_related("comments")
        .order_by("-created_at")
    )

    return news
