from django.conf import settings as s
from ninja import Router
from ninja_extra.pagination import paginate
from uuid import UUID

from epdb.models import Pathway
from ..pagination import EnhancedPageNumberPagination
from ..schemas import PathwayOutSchema, ReviewStatusFilter
from ..dal import get_user_entities_for_read, get_package_entities_for_read

router = Router()


@router.get("/pathways/", response=EnhancedPageNumberPagination.Output[PathwayOutSchema])
@paginate(
    EnhancedPageNumberPagination,
    page_size=s.API_PAGINATION_DEFAULT_PAGE_SIZE,
    filter_schema=ReviewStatusFilter,
)
def list_all_pathways(request):
    """
    List all pathways from reviewed packages.
    """
    user = request.user
    return get_user_entities_for_read(Pathway, user).order_by("name").all()


@router.get(
    "/package/{uuid:package_uuid}/pathway/",
    response=EnhancedPageNumberPagination.Output[PathwayOutSchema],
)
@paginate(
    EnhancedPageNumberPagination,
    page_size=s.API_PAGINATION_DEFAULT_PAGE_SIZE,
    filter_schema=ReviewStatusFilter,
)
def list_package_pathways(request, package_uuid: UUID):
    """
    List all pathways for a specific package.
    """
    user = request.user
    return get_package_entities_for_read(Pathway, package_uuid, user).order_by("name").all()
