Files
orchard/backend/app/schemas.py
Mondo Diaz a42ca4c872 Rewrite from Go + vanilla JS to Python (FastAPI) + React (TypeScript)
- Backend: Python 3.12 with FastAPI, SQLAlchemy, boto3
- Frontend: React 18 with TypeScript, Vite build tooling
- Updated Dockerfile for multi-stage Node + Python build
- Updated CI pipeline for Python backend
- Removed old Go code (cmd/, internal/, go.mod, go.sum)
- Updated README with new tech stack documentation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 17:16:43 -06:00

102 lines
1.7 KiB
Python

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"