link.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. from datetime import datetime
  2. from typing import Optional
  3. import uuid
  4. from pydantic import BaseModel, validator
  5. # Shared properties
  6. class LinkBase(BaseModel):
  7. facebook: Optional[str] = None
  8. instagram: Optional[str] = None
  9. blog: Optional[str] = None
  10. youtube: Optional[str] = None
  11. creator_id: str
  12. @validator('facebook')
  13. def check_facebook(cls, v):
  14. if v is None:
  15. return v
  16. if "https://www.facebook.com" not in v:
  17. raise ValueError('Please provide a valid facebook link')
  18. return v
  19. @validator('instagram')
  20. def check_instagram(cls, v):
  21. if v is None:
  22. return v
  23. if "https://www.instagram.com" not in v:
  24. raise ValueError('Please provide a valid instagram link')
  25. return v
  26. @validator('youtube')
  27. def check_youtube(cls, v):
  28. if v is None:
  29. return v
  30. if "https://www.youtube.com" not in v:
  31. raise ValueError('Please provide a valid youtube link')
  32. return v
  33. # Properties to receive via API on creation
  34. class LinkCreate(LinkBase):
  35. pass
  36. # Properties to receive via API on update
  37. class LinkUpdate(LinkBase):
  38. update_at: datetime
  39. pass
  40. class LinkInDBBase(LinkBase):
  41. id: Optional[str] = None
  42. class Config:
  43. orm_mode = True
  44. # Additional properties to return via API
  45. class Link(LinkInDBBase):
  46. pass
  47. # Additional properties stored in DB
  48. class LinkInDB(LinkInDBBase):
  49. pass