created adjacency list for recipie and ingredient

- Added pl/PGSQL functions for finding pairs that are connected
- Added tables for each adjacency list (RecipeConnection &
  IngredientConnection)
- Added table to keep track of recipes that have not been merged into
  the graph yet
- Added function to update adjacency list with new recipes
This commit is contained in:
2022-08-17 18:46:19 -04:00
parent 638bd58e8b
commit 573dbd2ec0
2 changed files with 181 additions and 9 deletions

View File

@@ -1 +1,42 @@
CREATE EXTENSION plpython3u
CREATE EXTENSION plpython3u;
DROP FUNCTION text_pairs;
CREATE OR REPLACE FUNCTION text_pairs(list TEXT[])
RETURNS SETOF TEXT[]
LANGUAGE plpgsql AS
$$
DECLARE
x TEXT;
y TEXT;
BEGIN
for x, y in(
SELECT *
FROM unnest(list) a
CROSS JOIN unnest(list) b
WHERE a > b)
LOOP
RETURN NEXT ARRAY [x, y];
END LOOP;
END;
$$;
DROP FUNCTION int_pairs;
CREATE OR REPLACE FUNCTION int_pairs(list INTEGER[])
RETURNS SETOF INTEGER[]
LANGUAGE plpgsql AS
$$
DECLARE
x INTEGER;
y INTEGER;
BEGIN
for x, y in(
SELECT *
FROM unnest(list) a
CROSS JOIN unnest(list) b
WHERE a > b)
LOOP
RETURN NEXT ARRAY [x, y];
END LOOP;
END;
$$;