From 63e87a3ed84ee9e9e4a4ff329a40d2b7ce5e5d0d Mon Sep 17 00:00:00 2001 From: l3wdfut4pwr Date: Sat, 4 Apr 2026 00:03:04 +0300 Subject: add profile --- app/schemas/integrations.py | 15 +++++++++++++++ app/schemas/profile.py | 21 +++++++++++++++++++++ app/schemas/user.py | 7 ++++++- 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 app/schemas/integrations.py create mode 100644 app/schemas/profile.py (limited to 'app/schemas') diff --git a/app/schemas/integrations.py b/app/schemas/integrations.py new file mode 100644 index 0000000..6383d5b --- /dev/null +++ b/app/schemas/integrations.py @@ -0,0 +1,15 @@ +from typing import Optional + +from pydantic import BaseModel + + +class UserIntegrationRead(BaseModel): + facebook: Optional[str] = None + pinterest: Optional[str] = None + discord: Optional[str] = None + artstation: Optional[str] = None + x: Optional[str] = None + behance: Optional[str] = None + instagram: Optional[str] = None + + model_config = {"from_attributes": True} diff --git a/app/schemas/profile.py b/app/schemas/profile.py new file mode 100644 index 0000000..ab54425 --- /dev/null +++ b/app/schemas/profile.py @@ -0,0 +1,21 @@ +from typing import Optional + +from pydantic import BaseModel + + +class ProfileRead(BaseModel): + id: int + user_id: int + avatar_file: Optional[str] = None + banner_file: Optional[str] = None + description: Optional[str] = None + + publications_count: int = 0 + collections_count: int = 0 + subscriptions_count: int = 0 + followers_count: int = 0 + following_count: int = 0 + + model_config = { + "from_attributes": True, + } diff --git a/app/schemas/user.py b/app/schemas/user.py index 6644216..83a3245 100644 --- a/app/schemas/user.py +++ b/app/schemas/user.py @@ -2,6 +2,10 @@ from typing import Optional from pydantic import BaseModel, EmailStr, Field +from app.schemas.profile import ProfileRead + +from .integrations import UserIntegrationRead + class UserCreate(BaseModel): username: str = Field(..., max_length=32) @@ -23,7 +27,8 @@ class UserRead(BaseModel): premium: bool is_banned: bool is_moderator: bool - + profile: Optional[ProfileRead] = None + integrations: Optional[UserIntegrationRead] = None model_config = { "from_attributes": True, } -- cgit v1.3-3-g829e