import pickle
import os
import logging

# Define logger
logger = logging.getLogger(__name__)

def train_model(courses_data, users_data, competency_data):
    trained_models = {}
    for client_id, client_data in users_data.items():
        client_courses_data = courses_data.get(client_id, [])
        client_competency_data = competency_data.get(client_id, [])
        
        trained_model = {
            'courses_data': client_courses_data,
            'users_data': client_data,
            'competency_data': client_competency_data
        }
        trained_models[client_id] = trained_model
    
    return trained_models

def save_model(trained_models, directory="trained_models"):
    try:
        for client_id, trained_model in trained_models.items():
            model_path = os.path.join(directory, f"model_{client_id}.pkl")
            os.makedirs(os.path.dirname(model_path), exist_ok=True)  # Ensure directory exists
            with open(model_path, "wb") as file:
                pickle.dump(trained_model, file)
    except Exception as e:
        logger.exception("Failed to save model")  # Log any exceptions during save
        raise e  # Re-raise exception to be caught by the calling function
