11# STL
22import logging
3+ import datetime
34from typing import Any
45
56# LOCAL
1213LOG = logging .getLogger ("Job" )
1314
1415
15- def insert (item : dict [str , Any ]) -> None :
16+ async def insert (item : dict [str , Any ]) -> None :
17+ if check_for_job_completion (item ["id" ]):
18+ await multi_field_update_job (
19+ item ["id" ],
20+ {
21+ "agent_mode" : item ["agent_mode" ],
22+ "prompt" : item ["prompt" ],
23+ "job_options" : item ["job_options" ],
24+ "elements" : item ["elements" ],
25+ "status" : "Queued" ,
26+ "result" : [],
27+ "time_created" : datetime .datetime .now ().isoformat (),
28+ "chat" : None ,
29+ },
30+ )
31+ return
32+
1633 common_insert (
1734 JOB_INSERT_QUERY ,
1835 (
@@ -33,6 +50,12 @@ def insert(item: dict[str, Any]) -> None:
3350 LOG .debug (f"Inserted item: { item } " )
3451
3552
53+ def check_for_job_completion (id : str ) -> dict [str , Any ]:
54+ query = f"SELECT * FROM jobs WHERE id = ?"
55+ res = common_query (query , (id ,))
56+ return res [0 ] if res else {}
57+
58+
3659async def get_queued_job ():
3760 query = (
3861 "SELECT * FROM jobs WHERE status = 'Queued' ORDER BY time_created DESC LIMIT 1"
@@ -48,6 +71,12 @@ async def update_job(ids: list[str], field: str, value: Any):
4871 LOG .debug (f"Updated job: { res } " )
4972
5073
74+ async def multi_field_update_job (id : str , fields : dict [str , Any ]):
75+ query = f"UPDATE jobs SET { ', ' .join (f'{ field } = ?' for field in fields .keys ())} WHERE id = ?"
76+ res = common_update (query , tuple (list (fields .values ()) + [id ]))
77+ LOG .debug (f"Updated job: { res } " )
78+
79+
5180async def delete_jobs (jobs : list [str ]):
5281 if not jobs :
5382 LOG .debug ("No jobs to delete." )
0 commit comments