from datetime import datetime, timezone
from sqlalchemy.orm import Session
from fastapi import HTTPException, status

from src.utils.pagination import QueryPaginator
from src.apps.base.models.country import Country
from uuid import UUID
from sqlalchemy.exc import IntegrityError
from typing import Optional
from src.apps.wine.wine.models.wine import WineDb
from src.core.exceptions import APIException

async def get_sweetnesses(db: Session) -> list:
    try:
        sweetnesses = db.query(WineDb.sweetness).distinct().all()
        sweetness_list = [s[0] for s in sweetnesses if s[0]]
        return sweetness_list
    except Exception as e:
        raise APIException(
            module="get_sweetnesses",
            error={"exception": str(e)},
            status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
            message="Failed to fetch sweetnesses."
        )