From 40a7e6420846ffa48e90ad7d3a4c59cedcfc5a99 Mon Sep 17 00:00:00 2001 From: zio Date: Mon, 1 Jun 2026 22:12:54 +0900 Subject: [PATCH] feat: add backend/models.py --- backend/models.py | 69 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 backend/models.py diff --git a/backend/models.py b/backend/models.py new file mode 100644 index 00000000..6db78dcb --- /dev/null +++ b/backend/models.py @@ -0,0 +1,69 @@ +from pydantic import BaseModel +from typing import Optional, List + +class LoginRequest(BaseModel): + username: str + password: str + +class TokenResponse(BaseModel): + access_token: str + token_type: str = "bearer" + username: str + display_name: str + +class Attachment(BaseModel): + part_id: str + filename: str + content_type: str + size: int + +class MailSummary(BaseModel): + uid: str + subject: str + sender: str + sender_addr: str + date: str + is_read: bool + has_attachment: bool + size: int + preview: str = "" + +class MailDetail(BaseModel): + uid: str + subject: str + sender: str + sender_addr: str + to: str + cc: str = "" + date: str + body_text: str = "" + body_html: str = "" + attachments: List[Attachment] = [] + is_read: bool = True + +class FolderInfo(BaseModel): + name: str + display: str + unread: int = 0 + total: int = 0 + +class MailListResponse(BaseModel): + messages: List[MailSummary] + total: int + page: int + per_page: int + +class SendRequest(BaseModel): + to: str + cc: Optional[str] = None + bcc: Optional[str] = None + subject: str + body: str + is_html: bool = False + reply_to_uid: Optional[str] = None + +class MoveRequest(BaseModel): + target_folder: str + +class ErrorResponse(BaseModel): + detail: str