From 2138db21ebd81789fb6340d5a806720add637389 Mon Sep 17 00:00:00 2001 From: Pakin Date: Mon, 4 Aug 2025 13:05:40 +0700 Subject: [PATCH] add full import data --- src/recipe_functions/import.rs | 47 +++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/src/recipe_functions/import.rs b/src/recipe_functions/import.rs index 63d6898..b7ff5cf 100644 --- a/src/recipe_functions/import.rs +++ b/src/recipe_functions/import.rs @@ -5,7 +5,7 @@ use serde_json::{Number, Value}; use super::common::*; use crate::{ - models::recipe::{self, PartialRecipe}, + models::recipe::{self, PartialRecipe, Recipe}, previews::{csvf::*, header::Headers}, }; @@ -591,3 +591,48 @@ pub fn generate_recipe_sheet_table(country_name: &str, into_version: usize) { recipe_table.add_column_desciption(0, material_names); recipe_table.generate_save_file("./test_result/recipe.csv"); } + +/// import only new data from source to target +/// +/// `import_target` must be mutable +/// +/// This only update the following fields +/// +/// - Recipe01 +/// - MaterialSetting +/// - MaterialCode +/// - Topping +/// +pub fn full_import_data(source: Recipe, mut import_target: Recipe) { + // import menus + source.Recipe01.iter().for_each(|r01| { + if !import_target.Recipe01.contains(r01) { + import_target.Recipe01.push(r01.clone()); + } + }); + + // import materials + source.MaterialSetting.iter().for_each(|ms| { + if !import_target.MaterialSetting.contains(ms) { + import_target.MaterialSetting.push(ms.clone()); + } + }); + + source.MaterialCode.iter().for_each(|mc| { + if !import_target.MaterialCode.contains(mc) { + import_target.MaterialCode.push(mc.clone()); + } + }); + + // import new toppings + source.Topping.ToppingList.iter().for_each(|tpl| { + if !import_target.Topping.ToppingList.contains(tpl) { + import_target.Topping.ToppingList.push(tpl.clone()); + } + }); + source.Topping.ToppingGroup.iter().for_each(|tg| { + if !import_target.Topping.ToppingGroup.contains(tg) { + import_target.Topping.ToppingGroup.push(tg.clone()); + } + }); +}