47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
from pydantic import BaseModel, EmailStr, constr
|
|
from typing import Optional, List
|
|
from enum import Enum
|
|
|
|
class UserRole(str, Enum):
|
|
user = "user"
|
|
manager = "manager"
|
|
admin = "admin"
|
|
|
|
class UserOut(BaseModel):
|
|
id: int
|
|
name: str
|
|
email: EmailStr
|
|
alias: Optional[str] = None
|
|
paypal_email: Optional[EmailStr] = None
|
|
role: UserRole
|
|
is_active: bool
|
|
balance_cents: int
|
|
favorites: List[int]
|
|
# NEU:
|
|
avatar_url: Optional[str] = None
|
|
public_stats: bool
|
|
|
|
class Config:
|
|
orm_mode = True
|
|
|
|
class UserCreate(BaseModel):
|
|
name: str
|
|
email: EmailStr
|
|
password: constr(min_length=8)
|
|
pin: constr(min_length=6, max_length=6)
|
|
alias: Optional[str] = None
|
|
paypal_email: Optional[EmailStr] = None
|
|
role: Optional[UserRole] = UserRole.user
|
|
|
|
class UserUpdate(BaseModel):
|
|
name: Optional[str] = None
|
|
email: Optional[EmailStr] = None
|
|
password: Optional[constr(min_length=8)] = None
|
|
pin: Optional[constr(min_length=6, max_length=6)] = None
|
|
alias: Optional[str] = None
|
|
paypal_email: Optional[EmailStr] = None
|
|
role: Optional[UserRole] = None
|
|
is_active: Optional[bool] = None
|
|
balance_cents: Optional[int] = None
|
|
favorites: Optional[List[int]] = None
|