timestamp.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. from datetime import datetime, timezone
  2. from typing import Optional
  3. from sqlmodel import Field
  4. from gpustack.schemas.common import UTCDateTime
  5. def _datetime_func():
  6. return datetime.now(timezone.utc).replace(tzinfo=None)
  7. class TimestampsMixin:
  8. """Mixin that define timestamp columns."""
  9. __abstract__ = True
  10. __config__ = None
  11. __created_at_name__ = "created_at"
  12. __updated_at_name__ = "updated_at"
  13. __deleted_at_name__ = "deleted_at"
  14. created_at: Optional[datetime] = Field(
  15. sa_type=UTCDateTime,
  16. sa_column_kwargs={
  17. "name": __created_at_name__,
  18. "default": _datetime_func,
  19. "nullable": False,
  20. },
  21. default=None,
  22. )
  23. updated_at: Optional[datetime] = Field(
  24. sa_type=UTCDateTime,
  25. sa_column_kwargs={
  26. "name": __updated_at_name__,
  27. "default": _datetime_func,
  28. "onupdate": _datetime_func,
  29. "nullable": False,
  30. },
  31. default=None,
  32. )
  33. deleted_at: Optional[datetime] = Field(
  34. sa_type=UTCDateTime,
  35. sa_column_kwargs={
  36. "name": __deleted_at_name__,
  37. "default": None,
  38. "nullable": True,
  39. },
  40. default=None,
  41. )