from datetime import datetime

from pydantic import BaseModel, field_serializer


class TenantBase(BaseModel):
    name: str
    code: str | None = None
    description: str | None = None
    status: str = "active"


class TenantCreate(TenantBase):
    pass


class TenantUpdate(BaseModel):
    name: str | None = None
    code: str | None = None
    description: str | None = None
    status: str | None = None


class TenantResponse(TenantBase):
    id: int
    created_at: datetime | None = None
    updated_at: datetime | None = None

    @field_serializer("created_at", "updated_at")
    def serialize_datetime(self, dt: datetime | None, _info):
        if dt is None:
            return None
        return dt.isoformat()

    class Config:
        from_attributes = True


CompanyBase = TenantBase
CompanyCreate = TenantCreate
CompanyUpdate = TenantUpdate
CompanyResponse = TenantResponse
