responses.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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 SmsResponse(BaseResponse):
  20. id: str
  21. created_at: datetime
  22. updated_at: datetime
  23. phone_number: str
  24. sending_time: datetime
  25. send_time: datetime
  26. class VolunteerResponse(BaseResponse):
  27. id: str
  28. created_at: datetime
  29. updated_at: datetime
  30. name: str
  31. surname: str
  32. email: str
  33. phone_number: str
  34. automatic_sms: bool
  35. slots_id: list[str] = []
  36. class SlotResponse(BaseResponse):
  37. id: str
  38. created_at: datetime
  39. updated_at: datetime
  40. title: str
  41. description: str
  42. starting_time: datetime
  43. ending_time: datetime
  44. volunteers_id: list[str] = []
  45. class SMSResponse(BaseResponse):
  46. id: str
  47. created_at: datetime
  48. updated_at: datetime
  49. volunteer_id: Optional[str]
  50. content: str
  51. phone_number: str
  52. sending_time: datetime
  53. send_time: Optional[datetime]
  54. class ProjectResponse(BaseResponse):
  55. id: str
  56. created_at: datetime
  57. updated_at: datetime
  58. name: str
  59. volunteers: list[VolunteerResponse]
  60. sms: list[SMSResponse]
  61. slots: list[SlotResponse]
  62. is_public: bool
  63. class ProjectListResponse(BaseResponse):
  64. id: str
  65. created_at: datetime
  66. updated_at: datetime
  67. name: str