services/ui_backend_service/data/db/models/run_row.py (77 lines of code) (raw):
from .base_row import BaseRow
import time
from services.data.db_utils import get_exposed_run_id
class RunRow(BaseRow):
flow_id: str = None
run_number: int = None
run_id: str = None
run: str = None
user_name: str = None
user: str = None
status: str = None
ts_epoch: int = 0
finished_at: int = None
duration: int = None
def __init__(
self,
flow_id,
user_name,
user=None,
run_number=None,
run_id=None,
run=None,
status=None,
ts_epoch=None,
finished_at=None,
duration=None,
tags=None,
system_tags=None,
last_heartbeat_ts=None,
**kwargs
):
self.flow_id = flow_id
self.user_name = user_name
self.user = user
self.run_number = run_number
self.run_id = run_id
self.run = run
self.status = status
self.tags = tags
self.system_tags = system_tags
if ts_epoch is None:
ts_epoch = int(round(time.time() * 1000))
self.ts_epoch = ts_epoch
self.last_heartbeat_ts = last_heartbeat_ts
self.finished_at = finished_at
self.duration = duration
self.last_heartbeat_ts = last_heartbeat_ts
def serialize(self, expanded: bool = False):
if expanded:
return {
"flow_id": self.flow_id,
"run_number": self.run_number,
"run_id": self.run_id,
"user_name": self.user_name,
"user": self.user,
"run": self.run,
"status": self.status,
"ts_epoch": self.ts_epoch,
"finished_at": self.finished_at,
"duration": self.duration,
"last_heartbeat_ts": self.last_heartbeat_ts,
"tags": self.tags,
"system_tags": self.system_tags
}
else:
return {
"flow_id": self.flow_id,
"run_number": str(get_exposed_run_id(self.run_number, self.run_id)),
"user_name": self.user_name,
"status": self.status,
"ts_epoch": self.ts_epoch,
"finished_at": self.finished_at,
"duration": self.duration,
"last_heartbeat_ts": self.last_heartbeat_ts,
"tags": self.tags,
"system_tags": self.system_tags
}