mirror of
https://github.com/grocy/grocy.git
synced 2025-04-29 01:32:38 +00:00
42 lines
993 B
SQL
42 lines
993 B
SQL
DROP VIEW recipes_nestings_resolved;
|
|
CREATE VIEW recipes_nestings_resolved
|
|
AS
|
|
WITH RECURSIVE r1(recipe_id, includes_recipe_id, includes_servings)
|
|
AS (
|
|
SELECT id, id, 1
|
|
FROM recipes
|
|
|
|
UNION ALL
|
|
|
|
SELECT rn.recipe_id, r1.includes_recipe_id, rn.servings
|
|
FROM recipes_nestings rn, r1 r1
|
|
WHERE rn.includes_recipe_id = r1.recipe_id
|
|
)
|
|
SELECT
|
|
*,
|
|
1 AS id -- Dummy, LessQL needs an id column
|
|
FROM r1;
|
|
|
|
CREATE TRIGGER prevent_self_nested_recipes_INS BEFORE INSERT ON recipes_nestings
|
|
BEGIN
|
|
SELECT CASE WHEN((
|
|
SELECT 1
|
|
FROM recipes_nestings
|
|
WHERE NEW.recipe_id = NEW.includes_recipe_id
|
|
)
|
|
NOTNULL) THEN RAISE(ABORT, "Recursive nested recipe detected") END;
|
|
END;
|
|
|
|
CREATE TRIGGER prevent_self_nested_recipes_UPD BEFORE UPDATE ON recipes_nestings
|
|
BEGIN
|
|
SELECT CASE WHEN((
|
|
SELECT 1
|
|
FROM recipes_nestings
|
|
WHERE NEW.recipe_id = NEW.includes_recipe_id
|
|
)
|
|
NOTNULL) THEN RAISE(ABORT, "Recursive nested recipe detected") END;
|
|
END;
|
|
|
|
DELETE FROM recipes_nestings
|
|
WHERE recipe_id = includes_recipe_id;
|