"""Pydantic schemas for House."""

from datetime import datetime
from typing import Optional

from pydantic import BaseModel, Field


class HouseCreate(BaseModel):
    title: str = Field(..., min_length=1, max_length=200)
    address: Optional[str] = Field(None, max_length=500)
    slug: str = Field(..., min_length=1, max_length=200, pattern=r"^[a-z0-9\-]+$")
    cover_image_url: Optional[str] = None


class HouseUpdate(BaseModel):
    title: Optional[str] = Field(None, min_length=1, max_length=200)
    address: Optional[str] = Field(None, max_length=500)
    slug: Optional[str] = Field(None, min_length=1, max_length=200, pattern=r"^[a-z0-9\-]+$")
    cover_image_url: Optional[str] = None
    status: Optional[str] = None


class HouseRead(BaseModel):
    id: str
    title: str
    address: Optional[str]
    slug: str
    cover_image_url: Optional[str]
    status: str
    created_by: Optional[str]
    created_at: datetime
    updated_at: datetime

    model_config = {"from_attributes": True}


class HouseList(BaseModel):
    items: list[HouseRead]
    total: int
