responses.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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. class ProjectListResponse(BaseResponse):
  63. id: str
  64. created_at: datetime
  65. updated_at: datetime
  66. name: str