From 0dfc52cbf75a55d88a4353203be14921f8e5f75b Mon Sep 17 00:00:00 2001 From: qzl Date: Sat, 28 Feb 2026 11:35:13 +0800 Subject: [PATCH] fix: improve friendships schemas type safety and consistency --- backend/src/v1/friendships/schemas.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/backend/src/v1/friendships/schemas.py b/backend/src/v1/friendships/schemas.py index f1355f7..b9b8ee2 100644 --- a/backend/src/v1/friendships/schemas.py +++ b/backend/src/v1/friendships/schemas.py @@ -1,38 +1,42 @@ from __future__ import annotations from datetime import datetime -from typing import Optional +from typing import ClassVar, Literal from uuid import UUID -from pydantic import BaseModel, Field +from pydantic import BaseModel, ConfigDict, Field class UserBasicInfo(BaseModel): id: str username: str - avatar_url: Optional[str] = None + avatar_url: str | None = None class FriendRequestCreate(BaseModel): + model_config: ClassVar[ConfigDict] = ConfigDict(extra="forbid") + target_user_id: UUID - content: Optional[str] = Field(None, max_length=200) + content: str | None = Field(None, max_length=200) class FriendRequestResponse(BaseModel): id: UUID sender: UserBasicInfo recipient: UserBasicInfo - content: Optional[str] - status: str + content: str | None + status: Literal["pending", "accepted", "rejected"] created_at: datetime class FriendResponse(BaseModel): id: UUID friend: UserBasicInfo - status: str + status: Literal["active"] created_at: datetime - accepted_at: Optional[datetime] + accepted_at: datetime | None class FriendRequestAction(BaseModel): + model_config: ClassVar[ConfigDict] = ConfigDict(extra="forbid") + pass