diff options
author | Bent Bisballe Nyeng <deva@aasimon.org> | 2022-05-01 17:31:28 +0200 |
---|---|---|
committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2022-05-26 18:41:21 +0200 |
commit | 8b65d0eb2815576780c57df428c1faf23fe75068 (patch) | |
tree | 2f82d0a218fed524e13451b01411f620ef152890 /src/database_gourmet.cc | |
parent | fc10974343701fd446bb174e991589de3a75d5e4 (diff) |
Add ingredient group support for both krecipes and gourmet databases and show them in the viewer.
Diffstat (limited to 'src/database_gourmet.cc')
-rw-r--r-- | src/database_gourmet.cc | 16 |
1 files changed, 14 insertions, 2 deletions
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 <sqlite3.h> #include <iostream> +#include <cassert> // 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 { |