summaryrefslogtreecommitdiff
path: root/src/database_gourmet.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/database_gourmet.cc')
-rw-r--r--src/database_gourmet.cc16
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
{