feat: enhance activity and task APIs with improved payload handling and response models

This commit is contained in:
Artem Kashaev
2025-11-27 16:43:46 +05:00
parent 0ecf1295d8
commit b8958dedbd
4 changed files with 119 additions and 42 deletions
+26 -3
View File
@@ -1,13 +1,36 @@
"""Task API schemas."""
"""Task API schemas and helpers."""
from __future__ import annotations
from datetime import date
from datetime import date, datetime, time, timezone
from pydantic import BaseModel
from app.models.task import TaskCreate
class TaskCreatePayload(BaseModel):
deal_id: int
title: str
description: str | None = None
due_date: date
due_date: date | None = None
def to_domain(self) -> TaskCreate:
return TaskCreate(
deal_id=self.deal_id,
title=self.title,
description=self.description,
due_date=_date_to_datetime(self.due_date) if self.due_date else None,
)
def to_range_boundary(value: date | None, *, end_of_day: bool) -> datetime | None:
"""Convert a date query param to an inclusive datetime boundary."""
if value is None:
return None
boundary_time = time(23, 59, 59, 999999) if end_of_day else time(0, 0, 0)
return datetime.combine(value, boundary_time, tzinfo=timezone.utc)
def _date_to_datetime(value: date) -> datetime:
return datetime.combine(value, time(0, 0, 0), tzinfo=timezone.utc)