##
# @file Logger.py
#
# @brief Funciones para la conversión de los resultados de transformación y validación a archivos de formato JSON.
# 
# @authors DopamineLabs LTDA
# @date 2025
##

import json

def obj_to_string(obj):
    '''! Realiza la conversión de un objeto a su representación en string.
    @param obj El objeto a ser transformado en su representacion en string.
    @return Representación en string del objeto. 
    '''
    return str(obj)

def dump_to_log_file(file_name, transformation_errors, associated_ids):
    '''! Convierte el diccionario resultante del proceso de transformación de la colección, en un archivo JSON.
    @param file_name Nombre del archivo JSON resultante. 
    @param transformation_errors Diccionario que contiene los pares -> _id_colecion_original : error_de_transformacion. 
    @param asociated_ids Diccionario que contien los pares -> _id_coleccion_original : [listado_ids_collecion_nueva]
    @return None
    '''

    # Empaqueta los diccionarios en estructura de salida
    output_dictionary = {
        'transformation_errors': transformation_errors,
        'associated_ids': associated_ids
    }
    # Guarda el diccionario empaquetado en archivo
    with open(file_name, 'w') as outfile:
        json.dump(output_dictionary, outfile, default=obj_to_string)

def dump_validation_to_file(file_name, validation_errors):
    '''! Convierte el diccionario de errores, resultante del proceso de validación, en un archivo JSON.
    @param file_name Nombre del archivo JSON resultante.
    @param validation_errors Corresponde al diccionario de errores, con pares de valor _id_coleccion_probada : {diccionario_errores}
    @return None
    '''
    with open(file_name, 'w') as outfile:
        json.dump(validation_errors, outfile, default=obj_to_string)