From 8b65d0eb2815576780c57df428c1faf23fe75068 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Sun, 1 May 2022 17:31:28 +0200 Subject: Add ingredient group support for both krecipes and gourmet databases and show them in the viewer. --- src/database_gourmet.cc | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'src/database_gourmet.cc') diff --git a/src/database_gourmet.cc b/src/database_gourmet.cc index c68e2a3..a9edb58 100644 --- a/src/database_gourmet.cc +++ b/src/database_gourmet.cc @@ -28,6 +28,7 @@ #include #include +#include // https://www.tutorialspoint.com/sqlite/sqlite_c_cpp.htm @@ -155,7 +156,7 @@ Recipe DatabaseGourmet::getRecipe(int id) { std::string sql = - "select amount, unit, item from ingredients where recipe_id=" + + "select amount, unit, item, inggroup from ingredients where recipe_id=" + std::to_string(id) + " order by position asc"; sqlite3_stmt *statement; if(sqlite3_prepare_v2(db, sql.data(), sql.length(), &statement, 0) != SQLITE_OK) @@ -164,6 +165,8 @@ Recipe DatabaseGourmet::getRecipe(int id) return {}; } + recipe.ingredient_groups.push_back({}); // first group is the empty-titled one. + int result = 0; while(true) { @@ -175,7 +178,16 @@ Recipe DatabaseGourmet::getRecipe(int id) ingredient.amount = sqlite3_column_double(statement, 0); ingredient.unit = getString(statement, 1); ingredient.item = getString(statement, 2); - recipe.ingredients.push_back(ingredient); + auto group_title = getString(statement, 3); + auto* group = &recipe.ingredient_groups.back(); + assert(recipe.ingredient_groups.size() > 0); + if(group->title != group_title) + { + recipe.ingredient_groups.push_back({group_title, {}}); + group = &recipe.ingredient_groups.back(); + } + + group->ingredients.push_back(ingredient); } else { -- cgit v1.2.3