fix: improve friendships schemas type safety and consistency

This commit is contained in:
qzl
2026-02-28 11:35:13 +08:00
parent 598c6c2ec5
commit 0dfc52cbf7
+12 -8
View File
@@ -1,38 +1,42 @@
from __future__ import annotations from __future__ import annotations
from datetime import datetime from datetime import datetime
from typing import Optional from typing import ClassVar, Literal
from uuid import UUID from uuid import UUID
from pydantic import BaseModel, Field from pydantic import BaseModel, ConfigDict, Field
class UserBasicInfo(BaseModel): class UserBasicInfo(BaseModel):
id: str id: str
username: str username: str
avatar_url: Optional[str] = None avatar_url: str | None = None
class FriendRequestCreate(BaseModel): class FriendRequestCreate(BaseModel):
model_config: ClassVar[ConfigDict] = ConfigDict(extra="forbid")
target_user_id: UUID target_user_id: UUID
content: Optional[str] = Field(None, max_length=200) content: str | None = Field(None, max_length=200)
class FriendRequestResponse(BaseModel): class FriendRequestResponse(BaseModel):
id: UUID id: UUID
sender: UserBasicInfo sender: UserBasicInfo
recipient: UserBasicInfo recipient: UserBasicInfo
content: Optional[str] content: str | None
status: str status: Literal["pending", "accepted", "rejected"]
created_at: datetime created_at: datetime
class FriendResponse(BaseModel): class FriendResponse(BaseModel):
id: UUID id: UUID
friend: UserBasicInfo friend: UserBasicInfo
status: str status: Literal["active"]
created_at: datetime created_at: datetime
accepted_at: Optional[datetime] accepted_at: datetime | None
class FriendRequestAction(BaseModel): class FriendRequestAction(BaseModel):
model_config: ClassVar[ConfigDict] = ConfigDict(extra="forbid")
pass pass