responses.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. from datetime import datetime
  2. from typing import Optional
  3. from pydantic import BaseModel, EmailStr
  4. class BaseResponse(BaseModel):
  5. # may define additional fields or config shared across responses
  6. class Config:
  7. orm_mode = True
  8. class AccessTokenResponse(BaseResponse):
  9. token_type: str
  10. access_token: str
  11. expires_at: int
  12. issued_at: int
  13. refresh_token: str
  14. refresh_token_expires_at: int
  15. refresh_token_issued_at: int
  16. class UserResponse(BaseResponse):
  17. id: str
  18. email: EmailStr
  19. class VolunteerResponse(BaseResponse):
  20. id: str
  21. created_at: datetime
  22. updated_at: datetime
  23. name: str
  24. surname: str
  25. email: str
  26. phone_number: str
  27. automatic_sms: bool
  28. slots_id: list[str] = []
  29. class SlotResponse(BaseResponse):
  30. id: str
  31. created_at: datetime
  32. updated_at: datetime
  33. title: str
  34. description: str
  35. place: str
  36. responsible_contact: str
  37. starting_time: datetime
  38. ending_time: datetime
  39. volunteers_id: list[str] = []
  40. class SMSResponse(BaseResponse):
  41. id: str
  42. created_at: datetime
  43. updated_at: datetime
  44. volunteer_id: Optional[str]
  45. content: str
  46. phone_number: str
  47. sending_time: datetime
  48. send_time: Optional[datetime]
  49. class ProjectResponse(BaseResponse):
  50. id: str
  51. created_at: datetime
  52. updated_at: datetime
  53. name: str
  54. volunteers: list[VolunteerResponse]
  55. sms: list[SMSResponse]
  56. slots: list[SlotResponse]
  57. is_public: bool
  58. class ProjectListResponse(BaseResponse):
  59. id: str
  60. created_at: datetime
  61. updated_at: datetime
  62. name: str
  63. is_public: bool