mini-chan-project / app /models.py
Demon Lord Vinsen
bzzzza
5b30cd8
Raw
History Blame Contribute Delete
1.19 kB
from __future__ import annotations
from typing import List, Optional
from datetime import datetime, timezone
from pydantic import BaseModel, Field
# ====== Chat history ======
class Message(BaseModel):
role: str = "user"
content: str = ""
ts: Optional[str] = None
class ChatRequest(BaseModel):
message: str = "" # 🚀 Beri default string kosong agar tidak 422 saat di-ping payload kosong
history: List[Message] = Field(default_factory=list)
username: Optional[str] = "Baka"
# ====== Device register ======
class RegisterRequest(BaseModel):
fcm_token: str
# ====== Scheduler ======
class ScheduleRequest(BaseModel):
task: str
scheduled_time: str
user_id: str
@property
def remind_at_utc(self) -> datetime:
try:
clean_ts = self.scheduled_time.replace("Z", "+00:00")
dt = datetime.fromisoformat(clean_ts)
if dt.tzinfo is None:
return dt.replace(tzinfo=timezone.utc)
return dt.astimezone(timezone.utc)
except ValueError as e:
raise ValueError(
f"Format scheduled_time tidak valid: {self.scheduled_time}"
) from e