postgres_models.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. """
  2. PostgreSQL数据模型定义
  3. 提供PostgreSQL数据库表的结构化模型定义
  4. """
  5. from typing import Optional, Dict, Any, List
  6. from dataclasses import dataclass
  7. from datetime import datetime
  8. @dataclass
  9. class PGUserModel:
  10. """PostgreSQL用户模型"""
  11. id: Optional[int] = None
  12. username: str = ""
  13. email: str = ""
  14. role: str = "user"
  15. is_active: bool = True
  16. created_at: Optional[datetime] = None
  17. updated_at: Optional[datetime] = None
  18. def to_dict(self) -> Dict[str, Any]:
  19. """转换为字典"""
  20. return {
  21. 'id': self.id,
  22. 'username': self.username,
  23. 'email': self.email,
  24. 'role': self.role,
  25. 'is_active': self.is_active,
  26. 'created_at': self.created_at.isoformat() if self.created_at else None,
  27. 'updated_at': self.updated_at.isoformat() if self.updated_at else None
  28. }
  29. @classmethod
  30. def from_dict(cls, data: Dict[str, Any]) -> 'PGUserModel':
  31. """从字典创建实例"""
  32. return cls(
  33. id=data.get('id'),
  34. username=data.get('username', ''),
  35. email=data.get('email', ''),
  36. role=data.get('role', 'user'),
  37. is_active=data.get('is_active', True),
  38. created_at=datetime.fromisoformat(data['created_at']) if data.get('created_at') else None,
  39. updated_at=datetime.fromisoformat(data['updated_at']) if data.get('updated_at') else None
  40. )
  41. __all__ = [
  42. "PGUserModel"
  43. ]