diff options
Diffstat (limited to 'Projekt/app/schemas.py')
-rw-r--r-- | Projekt/app/schemas.py | 61 |
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) + |