39 lines
1.5 KiB
Python
39 lines
1.5 KiB
Python
import logging
|
|
import aiomysql
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
async def get_matlab_command(cfg: object, tool: str, unit: str, pool) -> tuple:
|
|
"""Recupera le informazioni per l'esecuzione di un comando Matlab dal database.
|
|
|
|
Interroga il database per ottenere i dettagli necessari all'avvio di uno script
|
|
Matlab, basandosi sul nome dello strumento (tool) e dell'unità (unit).
|
|
|
|
Args:
|
|
cfg (object): L'oggetto di configurazione.
|
|
tool (str): Il nome dello strumento.
|
|
unit (str): Il nome dell'unità.
|
|
pool: Il pool di connessioni al database.
|
|
|
|
Returns:
|
|
tuple: Una tupla contenente le informazioni del comando Matlab,
|
|
o None se non viene trovato alcun comando.
|
|
"""
|
|
|
|
async with pool.acquire() as conn:
|
|
async with conn.cursor(aiomysql.DictCursor) as cur:
|
|
await cur.execute(f"""
|
|
SELECT m.matcall, t.ftp_send , t.unit_id, s.`desc` as statustools, t.api_send, u.inoltro_api, u.inoltro_api_url, u.inoltro_api_bearer_token, IFNULL(u.duedate, "") as duedate from matfuncs as m
|
|
INNER JOIN tools as t on t.matfunc = m.id
|
|
INNER JOIN units as u on u.id = t.unit_id
|
|
INNER JOIN statustools as s on t.statustool_id = s.id
|
|
where t.name = '{tool}' AND u.name = '{unit}';
|
|
""")
|
|
|
|
result = await cur.fetchone()
|
|
|
|
if not result:
|
|
logger.error(f"{unit} - {tool}: Matlab command not found.")
|
|
return None
|
|
else:
|
|
return result |