module RubyConversations::Concerns::MessageProcessing

def extract_inputs_data(prompt_data)

def extract_inputs_data(prompt_data)
  prompt_data['message_inputs'] ||
    prompt_data[:message_inputs] ||
    prompt_data['ai_message_inputs_attributes'] ||
    prompt_data[:ai_message_inputs_attributes] || []
end

def extract_prompts_data(message_data)

def extract_prompts_data(message_data)
  message_data['message_prompts'] ||
    message_data[:message_prompts] ||
    message_data['ai_message_prompts_attributes'] ||
    message_data[:ai_message_prompts_attributes]
end

def process_message_prompts(message_data)

def process_message_prompts(message_data)
  prompts_data = extract_prompts_data(message_data)
  return [] unless prompts_data
  prompts_data.map do |prompt_data|
    process_single_prompt(prompt_data)
  end
end

def process_prompt_inputs(prompt_instance, inputs_data)

def process_prompt_inputs(prompt_instance, inputs_data)
  inputs_data.each do |input_data|
    input_instance = RubyConversations::MessageInput.new(
      input_data.except('id', 'message_prompt_id', 'created_at', 'updated_at')
    )
    prompt_instance.message_inputs << input_instance
  end
end

def process_single_prompt(prompt_data)

def process_single_prompt(prompt_data)
  inputs_data = extract_inputs_data(prompt_data)
  prompt_instance = RubyConversations::MessagePrompt.new(
    prompt_data.except('id', 'message_id', 'created_at', 'updated_at')
  )
  process_prompt_inputs(prompt_instance, inputs_data)
  prompt_instance
end