diff --git a/apps/py-metadata/db/repository.py b/apps/py-metadata/db/repository.py index 830b0524..c325c475 100644 --- a/apps/py-metadata/db/repository.py +++ b/apps/py-metadata/db/repository.py @@ -5,7 +5,7 @@ from models.enums import TaskStatus from models.event import MetadataSearchResultEvent from models.task import MetadataSearchPayload, Task, MetadataSearchTask, MetadataSearchData from utils.logger import logger -from utils.time import utc_now +from utils.time import parse_mysql_ts, utc_now def fetch_next_task(db: Database) -> Optional[Task]: db.validate() @@ -31,8 +31,8 @@ def fetch_next_task(db: Database) -> Optional[Task]: claimed=row["CLAIMED"], claimedBy=row["CLAIMED_BY"], consumed=row["CONSUMED"], - lastCheckIn=row["LAST_CHECK_IN"], - persistedAt=row["PERSISTED_AT"] + lastCheckIn=parse_mysql_ts(row["LAST_CHECK_IN"]), + persistedAt=parse_mysql_ts(row["PERSISTED_AT"]) ) else: return None diff --git a/apps/py-metadata/tests/test_repository.py b/apps/py-metadata/tests/test_repository.py index 37351075..92b49c65 100644 --- a/apps/py-metadata/tests/test_repository.py +++ b/apps/py-metadata/tests/test_repository.py @@ -1,7 +1,7 @@ import json import uuid -from datetime import datetime -from utils.time import utc_now +from datetime import datetime, timezone +from utils.time import parse_mysql_ts, utc_now import pytest from db import repository from models.event import MetadataSearchResultEvent, EventMetadata, SearchResult, MetadataResult, Summary @@ -87,7 +87,7 @@ def make_row(task_id, ref_id): "CLAIMED_BY": None, "CONSUMED": False, "LAST_CHECK_IN": None, - "PERSISTED_AT": utc_now() + "PERSISTED_AT": utc_now().strftime("%Y-%m-%d %H:%M:%S.%f") } def test_fetch_next_task_maps_correctly(monkeypatch): @@ -117,7 +117,7 @@ def test_fetch_next_task_maps_correctly(monkeypatch): claimedBy=row["CLAIMED_BY"], consumed=row["CONSUMED"], lastCheckIn=row["LAST_CHECK_IN"], - persistedAt=datetime.fromisoformat(row["PERSISTED_AT"]) + persistedAt=parse_mysql_ts(row["PERSISTED_AT"]) ) monkeypatch.setattr(repository, "fetch_next_task", fake_fetch_next_task) diff --git a/apps/py-metadata/utils/time.py b/apps/py-metadata/utils/time.py index 8fe0d4f3..3445b7f2 100644 --- a/apps/py-metadata/utils/time.py +++ b/apps/py-metadata/utils/time.py @@ -3,3 +3,8 @@ from datetime import datetime, timezone def utc_now(): """Returnerer nåværende tid i UTC som en timezone-aware datetime.""" return datetime.now(timezone.utc) + +def parse_mysql_ts(value): + if value is None: + return None + return datetime.strptime(value, "%Y-%m-%d %H:%M:%S.%f").replace(tzinfo=timezone.utc) diff --git a/apps/py-watcher/models/event.py b/apps/py-watcher/models/event.py index 55dc3069..814dcbcc 100644 --- a/apps/py-watcher/models/event.py +++ b/apps/py-watcher/models/event.py @@ -7,7 +7,7 @@ from utils.time import utc_now # --- Metadata --- class Metadata(BaseModel): - created: str + created: datetime derivedFromId: Optional[Set[str]] = None # --- FileInfo ---