mirror of
https://github.com/grocy/grocy.git
synced 2025-04-29 01:32:38 +00:00
More recipes page performance optimizations (references #1750)
This commit is contained in:
parent
3b3f079754
commit
c190002ebb
@ -56,7 +56,7 @@ class RecipesController extends BaseController
|
||||
'fullcalendarEventSources' => $events,
|
||||
'recipes' => $recipes,
|
||||
'internalRecipes' => $this->getDatabase()->recipes()->where("id IN (SELECT recipe_id FROM meal_plan_internal_recipe_relation WHERE $mealPlanWhereTimespan)")->fetchAll(),
|
||||
'recipesResolved' => $this->getRecipesService()->GetRecipesResolved2("recipe_id IN (SELECT recipe_id FROM meal_plan_internal_recipe_relation WHERE $mealPlanWhereTimespan)"),
|
||||
'recipesResolved' => $this->getRecipesService()->GetRecipesResolved("recipe_id IN (SELECT recipe_id FROM meal_plan_internal_recipe_relation WHERE $mealPlanWhereTimespan)"),
|
||||
'products' => $this->getDatabase()->products()->orderBy('name', 'COLLATE NOCASE'),
|
||||
'quantityUnits' => $this->getDatabase()->quantity_units()->orderBy('name', 'COLLATE NOCASE'),
|
||||
'quantityUnitConversionsResolved' => $this->getDatabase()->quantity_unit_conversions_resolved(),
|
||||
|
28
migrations/0158.sql
Normal file
28
migrations/0158.sql
Normal file
@ -0,0 +1,28 @@
|
||||
CREATE VIEW recipes_missing_product_counts
|
||||
AS
|
||||
SELECT
|
||||
recipe_id,
|
||||
COUNT(*) AS missing_products_count
|
||||
FROM recipes_pos_resolved
|
||||
WHERE need_fulfilled = 0
|
||||
GROUP BY recipe_id;
|
||||
|
||||
DROP VIEW recipes_resolved;
|
||||
CREATE VIEW recipes_resolved
|
||||
AS
|
||||
SELECT
|
||||
1 AS id, -- Dummy, LessQL needs an id column
|
||||
r.id AS recipe_id,
|
||||
IFNULL(MIN(rpr.need_fulfilled), 1) AS need_fulfilled,
|
||||
IFNULL(MIN(rpr.need_fulfilled_with_shopping_list), 1) AS need_fulfilled_with_shopping_list,
|
||||
IFNULL(rmpc.missing_products_count, 0) AS missing_products_count,
|
||||
IFNULL(SUM(rpr.costs), 0) AS costs,
|
||||
IFNULL(SUM(rpr.calories), 0) AS calories
|
||||
FROM recipes r
|
||||
LEFT JOIN recipes_pos_resolved rpr
|
||||
ON r.id = rpr.recipe_id
|
||||
LEFT JOIN recipes_missing_product_counts rmpc
|
||||
ON r.id = rmpc.recipe_id
|
||||
GROUP BY r.id;
|
||||
|
||||
DROP VIEW recipes_resolved2;
|
@ -99,19 +99,6 @@ class RecipesService extends BaseService
|
||||
}
|
||||
}
|
||||
|
||||
// The same as GetRecipesResolved but without the column "missing_products_count" to improve performance when this is not needed
|
||||
public function GetRecipesResolved2($customWhere = null): Result
|
||||
{
|
||||
if ($customWhere == null)
|
||||
{
|
||||
return $this->getDatabase()->recipes_resolved2();
|
||||
}
|
||||
else
|
||||
{
|
||||
return $this->getDatabase()->recipes_resolved2()->where($customWhere);
|
||||
}
|
||||
}
|
||||
|
||||
public function CopyRecipe($recipeId)
|
||||
{
|
||||
if (!$this->RecipeExists($recipeId))
|
||||
|
Loading…
x
Reference in New Issue
Block a user