From 08192a089e9653d37f8adc56f5c5d5b5e4e3fb56 Mon Sep 17 00:00:00 2001 From: jessikitty Date: Tue, 27 Jan 2026 22:26:48 +1100 Subject: [PATCH] Add chore schemas for API requests/responses --- backend/app/schemas/chore.py | 52 ++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 backend/app/schemas/chore.py diff --git a/backend/app/schemas/chore.py b/backend/app/schemas/chore.py new file mode 100644 index 0000000..f497f9b --- /dev/null +++ b/backend/app/schemas/chore.py @@ -0,0 +1,52 @@ +"""Chore schemas.""" +from pydantic import BaseModel, ConfigDict +from typing import Optional +from datetime import datetime +from app.models.chore import ChoreFrequency, ChoreStatus + + +class ChoreBase(BaseModel): + """Base chore schema.""" + title: str + description: Optional[str] = None + room: str + frequency: ChoreFrequency + assigned_user_id: Optional[int] = None + due_date: Optional[datetime] = None + + +class ChoreCreate(ChoreBase): + """Schema for creating a chore.""" + pass + + +class ChoreUpdate(BaseModel): + """Schema for updating a chore.""" + title: Optional[str] = None + description: Optional[str] = None + room: Optional[str] = None + frequency: Optional[ChoreFrequency] = None + status: Optional[ChoreStatus] = None + assigned_user_id: Optional[int] = None + due_date: Optional[datetime] = None + + +class AssignedUser(BaseModel): + """Minimal user info for chore assignment.""" + model_config = ConfigDict(from_attributes=True) + + id: int + username: str + full_name: str + + +class Chore(ChoreBase): + """Schema for a chore response.""" + model_config = ConfigDict(from_attributes=True) + + id: int + status: ChoreStatus + assigned_user: Optional[AssignedUser] = None + completed_at: Optional[datetime] = None + created_at: datetime + updated_at: datetime