import uuid
from datetime import datetime

from sqlalchemy import Column, Text
from sqlmodel import Field, SQLModel

from app.db.base import TenantModel


class FaqEntryBase(SQLModel):
    question: str = Field(sa_column=Column(Text, nullable=False))
    answer: str = Field(sa_column=Column(Text, nullable=False))
    category: str | None = Field(default=None, nullable=True)
    is_active: bool = Field(default=True, nullable=False)


class FaqEntry(FaqEntryBase, TenantModel, table=True):
    __tablename__ = "faq_entry"  # pyright: ignore[reportAssignmentType]

    id: str = Field(
        default_factory=lambda: str(uuid.uuid4()),
        primary_key=True,
    )


class FaqEntryCreate(SQLModel):
    question: str
    answer: str
    category: str | None = None
    is_active: bool = True


class FaqEntryRead(FaqEntryBase):
    id: str
    restaurant_id: str
    created_at: datetime
    updated_at: datetime | None = None


class FaqEntryUpdate(SQLModel):
    question: str | None = None
    answer: str | None = None
    category: str | None = None
    is_active: bool | None = None
