parsley/app/serializers/recipe_serializer.rb

69 lines
1.8 KiB
Ruby
Raw Normal View History

2020-08-06 21:23:31 -05:00
class RecipeSerializer < ApplicationSerializer
def serialize
{
id: item.id,
name: item.name,
rating: item.rating,
yields: item.yields,
total_time: item.total_time,
active_time: item.active_time,
source: item.source,
is_ingredient: item.is_ingredient,
created_at: item.created_at,
updated_at: item.updated_at,
step_text: item.step_text,
converted_scale: item.converted_scale,
converted_system: item.converted_system,
converted_unit: item.converted_unit,
rendered_steps: MarkdownProcessor.render(item.step_text),
tags: item.tag_names,
ingredients: item.recipe_ingredients.map do |ri|
{
id: ri.id,
ingredient_id: ri.ingredient_id,
display_name: ri.display_name,
name: ri.name,
quantity: ri.quantity,
units: ri.units,
preparation: ri.preparation,
sort_order: ri.sort_order,
ingredient: serialize_ingredient(ri),
_destroy: false
}
end,
nutrition_data: {
errors: item.nutrition_data.errors,
nutrients: NutritionData::NUTRIENTS.select { |_, v| v.present? }.map do |name, label|
{
name: name,
label: label,
value: item.nutrition_data.send(name)
}
end
}
}
end
def serialize_ingredient(ri)
if ri.food.nil? && ri.recipe_as_ingredient.nil?
nil
elsif ri.food
{
name: ri.food.name,
density: ri.food.density,
notes: ri.food.notes
}
else
{
name: ri.recipe_as_ingredient.name
}
end
end
end