from pydantic import BaseModel
from typing import Optional
from datetime import datetime
from uuid import UUID
from schema.user_schema import UserSchema   

class LabelRequestSchema(BaseModel):
    name: str
    color: Optional[str]=None


class OrganizationListResponse(BaseModel):
    id:UUID
    name:str
    logo_url:Optional[str]
    status:Optional[str]=None
    slug:Optional[str]=None

class LabelResponseSchema(BaseModel):
    name: str
    color: Optional[str] = None
    id: UUID
    organization: OrganizationListResponse
    creator: UserSchema
    created_at: datetime
    updated_at: datetime

    class Config:
        from_orm = True
        from_attributes = True


class LabelResponseList(BaseModel):
    labels: list[LabelResponseSchema]

class LabelUpdateRequestSchema(BaseModel):
    id: UUID
    name: Optional[str]=None
    color: Optional[str]=None

class LabelResponseSchema(BaseModel):
    message: str
    label: LabelResponseSchema


class TicketLabelRequestSchema(BaseModel):
    ticket_id: UUID
    label_id: UUID

class TicketLabelResponseSchema(BaseModel):
    message: str

class TicketLabelResponseList(BaseModel):
    ticket_labels: list[TicketLabelResponseSchema]


class ReleaseResponseSchema(BaseModel):
    id: UUID
    name: str

    class Config:
        from_attributes = True
        from_orm = True


class ReleaseResponseList(BaseModel):
    releases: list[ReleaseResponseSchema]


