Skip to content

Commit 3c2ea75

Browse files
committed
Improve orchestration load times
1 parent 93a4a24 commit 3c2ea75

File tree

6 files changed

+414
-49
lines changed

6 files changed

+414
-49
lines changed

domains/etl/models/run.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,52 @@ class TaskRun(models.Model):
1010
started_at = models.DateTimeField(auto_now_add=True)
1111
finished_at = models.DateTimeField(null=True, blank=True)
1212
result = models.JSONField(blank=True, null=True)
13+
14+
@staticmethod
15+
def extract_message(result: dict | None) -> str | None:
16+
if not isinstance(result, dict):
17+
return None
18+
19+
for key in (
20+
"message",
21+
"summary",
22+
"statusMessage",
23+
"status_message",
24+
"failureReason",
25+
"failure_reason",
26+
"error",
27+
):
28+
value = result.get(key)
29+
if isinstance(value, str) and value.strip():
30+
return value
31+
32+
return None
33+
34+
@staticmethod
35+
def extract_failure_count(result: dict | None) -> int | None:
36+
if not isinstance(result, dict):
37+
return None
38+
39+
for key in ("failure_count", "failureCount"):
40+
value = result.get(key)
41+
42+
if isinstance(value, bool):
43+
continue
44+
if isinstance(value, int):
45+
return value
46+
if isinstance(value, float) and value.is_integer():
47+
return int(value)
48+
if isinstance(value, str):
49+
normalized = value.strip()
50+
if normalized.lstrip("-").isdigit():
51+
return int(normalized)
52+
53+
return None
54+
55+
@property
56+
def message(self) -> str | None:
57+
return self.extract_message(self.result)
58+
59+
@property
60+
def failure_count(self) -> int | None:
61+
return self.extract_failure_count(self.result)

0 commit comments

Comments
 (0)