From 83d0729df9584dee51510004eaef3b13ca4c625b Mon Sep 17 00:00:00 2001 From: Mike McLean Date: May 23 2023 03:51:26 +0000 Subject: more QueryView --- diff --git a/kojihub/db.py b/kojihub/db.py index 711619b..c812d3a 100644 --- a/kojihub/db.py +++ b/kojihub/db.py @@ -842,15 +842,7 @@ class QueryView: joins = [] joinmap = {} fieldmap = {} - ''' - fieldmap looks like: - - { - 'alias': - ['fullname', 'joinkey', - - } - ''' + default_fields = () def __init__(self, clauses=None, fields=None, opts=None): self.extra_joins = [] @@ -867,7 +859,9 @@ class QueryView: opts=opts) def get_fields(self, fields): - fields = fields or self.fieldmap.keys() # XXX stable order + fields = fields or self.default_fields + if not fields or fields == '*': + fields = sorted(self.fieldmap.keys()) return {self.map_field(f): f for f in fields} diff --git a/kojihub/scheduler.py b/kojihub/scheduler.py index 822ad6d..a2fa0f7 100644 --- a/kojihub/scheduler.py +++ b/kojihub/scheduler.py @@ -128,13 +128,25 @@ def get_host_data(hostID=None): class TaskRunsQuery(QueryView): tables = ['scheduler_task_runs'] + joinmap = { + 'task': 'task ON scheduler_task_runs.task_id = task.id', + 'host': 'host ON scheduler_task_runs.host_id = host.id', + } fieldmap = { 'id': ['scheduler_task_runs.id', None], 'task_id': ['scheduler_task_runs.task_id', None], + 'method': ['task.method', 'task'], + 'state': ['task.state', 'task'], + 'owner': ['task.owner', 'task'], + 'arch': ['task.arch', 'task'], + 'channel_id': ['task.channel_id', 'task'], + 'host_name': ['host.name', 'host'], + 'host_ready': ['host.ready', 'host'], 'host_id': ['scheduler_task_runs.host_id', None], 'active': ['scheduler_task_runs.active', None], 'create_ts': ["date_part('epoch', scheduler_task_runs.create_time)", None], } + default_fields = ('id', 'task_id', 'host_id') def get_task_runs2(clauses=None, fields=None):