import logging from fastapi import HTTPException from .. import database logger = logging.getLogger(__name__) def search_articles(query: str, limit: int = 20): """Search articles in NOM_ARTICOLE by codmat or denumire.""" if database.pool is None: raise HTTPException(status_code=503, detail="Oracle unavailable") if not query or len(query) < 2: return [] with database.pool.acquire() as conn: with conn.cursor() as cur: cur.execute(""" SELECT id_articol, codmat, denumire, um FROM nom_articole WHERE (UPPER(codmat) LIKE UPPER(:q) || '%' OR UPPER(denumire) LIKE '%' || UPPER(:q) || '%') AND sters = 0 AND inactiv = 0 AND ROWNUM <= :lim ORDER BY CASE WHEN UPPER(codmat) LIKE UPPER(:q) || '%' THEN 0 ELSE 1 END, codmat """, {"q": query, "lim": limit}) columns = [col[0].lower() for col in cur.description] return [dict(zip(columns, row)) for row in cur.fetchall()]