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