from datetime import datetime from typing import Optional from pydantic import BaseModel class ColumnCreate(BaseModel): name: str type: str # text, number, date, select, etc. required: bool = False default_value: Optional[str] = None position: int = 0 options: Optional[dict] = None class ColumnRead(BaseModel): id: int table_id: int name: str type: str required: bool default_value: Optional[str] position: int options: Optional[dict] created_at: datetime class Config: from_attributes = True class ColumnUpdate(BaseModel): name: Optional[str] = None type: Optional[str] = None required: Optional[bool] = None default_value: Optional[str] = None position: Optional[int] = None options: Optional[dict] = None class TableCreate(BaseModel): name: str description: Optional[str] = None class TableRead(BaseModel): id: int workspace_id: int name: str description: Optional[str] created_at: datetime updated_at: datetime class Config: from_attributes = True class TableUpdate(BaseModel): name: Optional[str] = None description: Optional[str] = None class TableDetailRead(TableRead): columns: list[ColumnRead] = [] class Config: from_attributes = True