from django.db import connection from apps.common.utils import clean_sql_string, clean_sql_int def get_status_action(): """ Acción simple para comprobar que la lógica de la API responde. """ return {"status": "ok", "message": "API is running"} def getData(params): """ Función estándar para obtener datos de promociones. """ # 1. Definimos la query con placeholders (%s) query = """ SELECT id, nombre, fecha_inicio, descripcion FROM promociones WHERE id = %s AND activo = %s """ # 2. Preparamos el diccionario de parámetros (tu estándar get_parameterized) # Limpiamos los datos antes de enviarlos a la base de datos id_promocion = clean_sql_int(params.get('id')) is_active = True if params.get('activo') else False parameter_dict = [id_promocion, is_active] # 3. Ejecución parametrizada with connection.cursor() as cursor: cursor.execute(query, parameter_dict) columns = [col[0] for col in cursor.description] result = [dict(zip(columns, row)) for row in cursor.fetchall()] return result def setData(params): """ Función estándar para insertar o actualizar (set_parameterized). """ # Ejemplo de UPDATE con JOIN (como solicitaste en tu estándar) query = """ UPDATE promociones p SET p.nombre = %s, p.fecha_modificacion = %s FROM categorias c WHERE p.categoria_id = c.id AND p.id = %s """ # Fecha en formato YYYY-MM-DD para SQL import datetime fecha_hoy = datetime.datetime.now().strftime('%Y-%m-%d') parameter_dict = [ clean_sql_string(params.get('nombre')), fecha_hoy, clean_sql_int(params.get('id')) ] with connection.cursor() as cursor: cursor.execute(query, parameter_dict) affected_rows = cursor.rowcount return affected_rows