Server : Apache System : Linux dedi-14684855.grupobig.com 5.14.0-611.49.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Apr 21 16:39:08 EDT 2026 x86_64 User : grupo692 ( 1004) PHP Version : 8.2.31 Disable Function : NONE Directory : /opt/dash_backend_new/app/ |
# app/sql_utils.py
from typing import List, Dict, Tuple
def build_in_clause(
field_name: str,
values: List[int],
prefix: str = "u",
) -> Tuple[str, Dict[str, int]]:
"""
Gera cláusula IN segura para Oracle com binds.
Exemplo:
field_name = "COD_UNIDADE"
values = [2, 3, 4]
Retorna:
("COD_UNIDADE IN (:u0, :u1, :u2)",
{"u0": 2, "u1": 3, "u2": 4})
"""
if not values:
raise ValueError("Lista de valores vazia para cláusula IN.")
params = {}
placeholders = []
for idx, value in enumerate(values):
key = f"{prefix}{idx}"
placeholders.append(f":{key}")
params[key] = value
clause = f"{field_name} IN ({', '.join(placeholders)})"
return clause, params