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_colors(db: Session) -> list:
    try: 
        colors = db.query(WineDb.color).distinct().all()
        color_list = [c[0] for c in colors if c[0]]
        return [color for color in color_list]
    except Exception as e:
        raise APIException(
                module="get_colors",
                error={"exception": str(e)},
                status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
                message="Failed to fetch colors."
            )