diff --git a/src/services/scheduler_sync/discord_events.py b/src/services/scheduler_sync/discord_events.py index 40ccece..cede04b 100644 --- a/src/services/scheduler_sync/discord_events.py +++ b/src/services/scheduler_sync/discord_events.py @@ -2,7 +2,7 @@ from typing import Self from datetime import datetime, timedelta from httpx import AsyncClient -from pydantic import BaseModel +from pydantic import BaseModel, field_serializer from config import config @@ -15,6 +15,10 @@ class RecurrenceRule(BaseModel): interval: int frequency: int + @field_serializer("start") + def serialize_datetime(cls, value: datetime) -> str: + return value.isoformat() + def next_date(self, start: datetime) -> datetime: next_date = start @@ -77,6 +81,10 @@ class CreateDiscordEvent(BaseModel): scheduled_end_time: datetime recurrence_rule: RecurrenceRule | None + @field_serializer("scheduled_start_time", "scheduled_end_time") + def serialize_datetime(cls, value: datetime) -> str: + return value.isoformat() + @classmethod def parse_from_twitch_event(cls, event: TwitchEvent) -> Self: if event.categories: @@ -126,6 +134,10 @@ class UpdateDiscordEvent(BaseModel): scheduled_end_time: datetime recurrence_rule: RecurrenceRule | None + @field_serializer("scheduled_start_time", "scheduled_end_time") + def serialize_datetime(cls, value: datetime) -> str: + return value.isoformat() + async def edit_discord_event(event_id: str, event: UpdateDiscordEvent): async with AsyncClient() as client: