summaryrefslogtreecommitdiff
path: root/Projekt/app/schemas.py
diff options
context:
space:
mode:
Diffstat (limited to 'Projekt/app/schemas.py')
-rw-r--r--Projekt/app/schemas.py61
1 files changed, 61 insertions, 0 deletions
diff --git a/Projekt/app/schemas.py b/Projekt/app/schemas.py
new file mode 100644
index 0000000..439722c
--- /dev/null
+++ b/Projekt/app/schemas.py
@@ -0,0 +1,61 @@
+from pydantic import BaseModel, EmailStr
+from pydantic.types import conint
+from datetime import datetime
+from typing import Optional
+
+class PostBase(BaseModel):
+ title: str
+ content: str
+ published: bool = True # Default True
+
+class PostCreate(PostBase):
+ pass
+
+# User Stuff
+
+class UserCreate(BaseModel):
+ email: EmailStr #Selleks vaja emaild-validator lib, mis tuli pip install fastapi[all]-iga koos.
+ password: str
+
+class UserOut(BaseModel):
+ id: int
+ email: EmailStr
+ created_at: datetime
+
+ class Config:
+ orm_mode = True
+
+
+class UserLogin(BaseModel):
+ email: EmailStr
+ password: str
+
+
+class Token(BaseModel):
+ access_token: str
+ token_type: str
+
+class TokenData(BaseModel):
+ id: Optional[str] = None
+
+
+## Response
+
+class Post(PostBase):
+ id: int
+ created_at: datetime
+ owner_id: int
+ owner: UserOut # Class alt poolt - see skeem, mille mis kehtib ka Get Useri puhul.
+
+ class Config: # Selleks, et pydantic oskaks lugeda sqlalchemy type modelit mida talle et antakse
+ orm_mode = True
+
+class PostOut(BaseModel):
+ Post: Post
+ votes: int
+
+
+class Vote(BaseModel):
+ post_id: int
+ dir: conint(le=1) #int that can be only 0 or 1 (and also negative, but that should be fine)
+