from datetime import datetime from typing import Optional, List from pydantic import BaseModel from uuid import UUID # Grove schemas class GroveCreate(BaseModel): name: str description: Optional[str] = None is_public: bool = True class GroveResponse(BaseModel): id: UUID name: str description: Optional[str] is_public: bool created_at: datetime updated_at: datetime created_by: str class Config: from_attributes = True # Tree schemas class TreeCreate(BaseModel): name: str description: Optional[str] = None class TreeResponse(BaseModel): id: UUID grove_id: UUID name: str description: Optional[str] created_at: datetime updated_at: datetime class Config: from_attributes = True # Fruit schemas class FruitResponse(BaseModel): id: str size: int content_type: Optional[str] original_name: Optional[str] created_at: datetime created_by: str ref_count: int class Config: from_attributes = True # Graft schemas class GraftCreate(BaseModel): name: str fruit_id: str class GraftResponse(BaseModel): id: UUID tree_id: UUID name: str fruit_id: str created_at: datetime created_by: str class Config: from_attributes = True # Cultivate response (upload) class CultivateResponse(BaseModel): fruit_id: str size: int grove: str tree: str tag: Optional[str] # Consumer schemas class ConsumerResponse(BaseModel): id: UUID tree_id: UUID project_url: str last_access: datetime created_at: datetime class Config: from_attributes = True # Health check class HealthResponse(BaseModel): status: str version: str = "1.0.0"