responses.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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. place: str
  43. responsible_contact: str
  44. starting_time: datetime
  45. ending_time: datetime
  46. volunteers_id: list[str] = []
  47. class SMSResponse(BaseResponse):
  48. id: str
  49. created_at: datetime
  50. updated_at: datetime
  51. volunteer_id: Optional[str]
  52. content: str
  53. phone_number: str
  54. sending_time: datetime
  55. send_time: Optional[datetime]
  56. class ProjectResponse(BaseResponse):
  57. id: str
  58. created_at: datetime
  59. updated_at: datetime
  60. name: str
  61. volunteers: list[VolunteerResponse]
  62. sms: list[SMSResponse]
  63. slots: list[SlotResponse]
  64. is_public: bool
  65. class ProjectListResponse(BaseResponse):
  66. id: str
  67. created_at: datetime
  68. updated_at: datetime
  69. name: str