- 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
102 lines
1.7 KiB
Python
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"
|