| """Pydantic schemas for FastAPI request/response models.""" |
|
|
| from pydantic import BaseModel |
| from typing import Optional, List, Dict, Any |
| from datetime import datetime |
|
|
|
|
| |
| class UserBase(BaseModel): |
| firstName: str |
| lastName: str |
| avatar_url: Optional[str] = None |
|
|
|
|
| class UserCreate(UserBase): |
| pass |
|
|
|
|
| class User(UserBase): |
| id: str |
| created_at: datetime |
|
|
| class Config: |
| from_attributes = True |
|
|
|
|
| |
| class ProjectBase(BaseModel): |
| name: str |
| description: str |
|
|
|
|
| class ProjectCreate(ProjectBase): |
| userId: str |
|
|
|
|
| class ProjectJoin(BaseModel): |
| userId: str |
|
|
|
|
| class Project(ProjectBase): |
| id: str |
| created_by: str |
| created_at: datetime |
|
|
| class Config: |
| from_attributes = True |
|
|
|
|
| class ProjectWithRole(Project): |
| role: str |
|
|
|
|
| |
| class TaskBase(BaseModel): |
| title: str |
| description: Optional[str] = None |
|
|
|
|
| class TaskCreate(TaskBase): |
| assignedTo: Optional[str] = None |
|
|
|
|
| class Task(TaskBase): |
| id: str |
| project_id: str |
| status: str |
| assigned_to: Optional[str] = None |
| created_at: datetime |
| completed_at: Optional[datetime] = None |
|
|
| class Config: |
| from_attributes = True |
|
|
|
|
| |
| class TaskCompleteRequest(BaseModel): |
| userId: str |
| whatIDid: str |
| codeSnippet: Optional[str] = None |
|
|
|
|
| class TaskCompleteResponse(BaseModel): |
| success: bool |
| log_entry_id: str |
|
|
|
|
| |
| class LogEntry(BaseModel): |
| id: str |
| project_id: str |
| task_id: Optional[str] = None |
| user_id: Optional[str] = None |
| actor_type: str |
| action_type: str |
| raw_input: str |
| code_snippet: Optional[str] = None |
| generated_doc: str |
| tags: List[str] = [] |
| created_at: datetime |
|
|
| class Config: |
| from_attributes = True |
|
|
|
|
| class ActivityResponse(BaseModel): |
| entries: List[LogEntry] |
|
|
|
|
| |
| class SearchFilters(BaseModel): |
| userId: Optional[str] = None |
| dateFrom: Optional[str] = None |
| dateTo: Optional[str] = None |
| tags: Optional[List[str]] = None |
|
|
|
|
| class SearchRequest(BaseModel): |
| query: str |
| filters: Optional[SearchFilters] = None |
|
|
|
|
| class SearchSource(BaseModel): |
| id: str |
| summary: str |
|
|
|
|
| class SearchResponse(BaseModel): |
| answer: str |
| sources: List[SearchSource] |
|
|
|
|
| |
| class SmartQueryRequest(BaseModel): |
| query: str |
| currentUserId: str |
| currentDatetime: Optional[str] = None |
|
|
|
|
| class SmartQuerySource(BaseModel): |
| id: str |
| type: str |
| summary: str |
| date: Optional[str] = None |
| relevance: Optional[float] = None |
| status: Optional[str] = None |
|
|
|
|
| class SmartQueryResponse(BaseModel): |
| answer: str |
| tools_used: List[str] = [] |
| sources: List[SmartQuerySource] = [] |
|
|
|
|
| |
| class ChatMessage(BaseModel): |
| role: str |
| content: str |
|
|
|
|
| class ChatRequest(BaseModel): |
| messages: List[ChatMessage] |
| projectId: str |
|
|
|
|
| class ChatResponse(BaseModel): |
| message: str |
|
|
|
|
| |
| class ErrorResponse(BaseModel): |
| error: str |
| detail: Optional[str] = None |
|
|