47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
from typing import Any, Optional
|
|
|
|
class User:
|
|
def __init__(
|
|
self,
|
|
id: str,
|
|
first_name: str,
|
|
last_name: str,
|
|
username: str,
|
|
email: str,
|
|
password: str,
|
|
verified: bool,
|
|
external_id: Optional[str],
|
|
tenant_id: Optional[str],
|
|
created_at: datetime | str,
|
|
updated_at: datetime | str,
|
|
deleted_at: datetime | str | None,
|
|
) -> None:
|
|
self.id = id
|
|
self.first_name = first_name
|
|
self.last_name = last_name
|
|
self.username = username
|
|
self.email = email
|
|
self.password = password
|
|
self.verified = verified
|
|
self.external_id = external_id
|
|
self.tenant_id = tenant_id
|
|
self.created_at = self._parse_datetime(created_at)
|
|
self.updated_at = self._parse_datetime(updated_at)
|
|
self.deleted_at = self._parse_datetime(deleted_at) if deleted_at is not None else None
|
|
|
|
def __str__(self) -> str:
|
|
return f"{self.first_name} {self.last_name} - {self.email} - {self.id} - {self.tenant_id} - {self.created_at} - {self.updated_at} - {self.deleted_at}"
|
|
|
|
@staticmethod
|
|
def _parse_datetime(value: Any) -> Any:
|
|
if isinstance(value, datetime):
|
|
return value
|
|
if isinstance(value, str):
|
|
try:
|
|
return datetime.fromisoformat(value)
|
|
except ValueError:
|
|
return value
|
|
return value |