from __future__ import annotations import uuid from datetime import datetime, timezone from dataclasses import dataclass, field @dataclass class BaseEntity: id: uuid.UUID = field(default_factory=uuid.uuid4) created_at: datetime = field(default_factory=lambda: datetime.now(timezone.utc)) updated_at: datetime = field(default_factory=lambda: datetime.now(timezone.utc)) def touch(self) -> None: self.updated_at = datetime.now(timezone.utc)