summaryrefslogtreecommitdiff
path: root/app/schemas
diff options
context:
space:
mode:
Diffstat (limited to 'app/schemas')
-rw-r--r--app/schemas/integrations.py15
-rw-r--r--app/schemas/profile.py21
-rw-r--r--app/schemas/user.py7
3 files changed, 42 insertions, 1 deletions
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,
}