diff --git a/src/dialect_map_core/models/__utils.py b/src/dialect_map_core/models/__utils.py index 29cea19..5f3722b 100644 --- a/src/dialect_map_core/models/__utils.py +++ b/src/dialect_map_core/models/__utils.py @@ -2,6 +2,9 @@ import uuid +from datetime import datetime +from datetime import timezone + def generate_id() -> str: """ @@ -10,3 +13,12 @@ def generate_id() -> str: """ return str(uuid.uuid4()).replace("-", "") + + +def generate_timestamp() -> datetime: + """ + Generates a UTC timestamp + :return: UTC timestamp + """ + + return datetime.now(timezone.utc) diff --git a/src/dialect_map_core/models/base.py b/src/dialect_map_core/models/base.py index db9d7dd..5b4a49e 100644 --- a/src/dialect_map_core/models/base.py +++ b/src/dialect_map_core/models/base.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- from abc import abstractmethod -from datetime import datetime from sqlalchemy import Boolean from sqlalchemy import DateTime @@ -11,6 +10,8 @@ from sqlalchemy.orm import mapped_column as Column from sqlalchemy.orm import validates +from .__utils import generate_timestamp + class Base(DeclarativeBase): """Base class for all the Python data models""" @@ -82,7 +83,7 @@ def created_at(self): @declared_attr def audited_at(self): - return Column(DateTime, nullable=True, index=False, default=datetime.utcnow) + return Column(DateTime, nullable=True, index=False, default=generate_timestamp) @validates("audited_at") def check_audited(self, key, val): @@ -133,7 +134,7 @@ def archived_at(self): @declared_attr def audited_at(self): - return Column(DateTime, nullable=True, index=False, default=datetime.utcnow) + return Column(DateTime, nullable=True, index=False, default=generate_timestamp) @validates("archived_at") def check_archived(self, key, val): @@ -189,11 +190,11 @@ def created_at(self): @declared_attr def updated_at(self): - return Column(DateTime, nullable=False, index=True, onupdate=datetime.utcnow) + return Column(DateTime, nullable=False, index=True, onupdate=generate_timestamp) @declared_attr def audited_at(self): - return Column(DateTime, nullable=True, index=False, default=datetime.utcnow) + return Column(DateTime, nullable=True, index=False, default=generate_timestamp) @validates("audited_at") def check_audited(self, key, val):