from pydantic import BaseModel from typing import Optional, List from datetime import datetime class CarbonProjectBase(BaseModel): title: str description: str location: str project_type: str methodology: str total_credits_available: int price_per_credit: float start_date: datetime end_date: datetime class CarbonProjectCreate(CarbonProjectBase): pass class CarbonProjectUpdate(BaseModel): title: Optional[str] = None description: Optional[str] = None location: Optional[str] = None project_type: Optional[str] = None methodology: Optional[str] = None total_credits_available: Optional[int] = None price_per_credit: Optional[float] = None start_date: Optional[datetime] = None end_date: Optional[datetime] = None verification_document_url: Optional[str] = None class CarbonProjectResponse(CarbonProjectBase): id: int credits_sold: int verification_status: str verification_document_url: Optional[str] = None is_active: bool contract_address: Optional[str] = None token_id: Optional[str] = None created_at: datetime updated_at: datetime developer_id: int class Config: from_attributes = True class CarbonProjectListResponse(BaseModel): projects: List[CarbonProjectResponse] total: int page: int page_size: int