ag_gen/sql/factbase.sql
2021-09-23 13:55:29 -05:00

27 lines
843 B
PL/PgSQL
Executable File

CREATE FUNCTION new_factbase(myhash TEXT) RETURNS INTEGER AS $$
DECLARE
myid INTEGER;
BEGIN
IF NOT EXISTS (SELECT 1 FROM factbase WHERE hash = myhash) THEN
INSERT INTO factbase VALUES (DEFAULT, myhash) RETURNING id INTO myid;
ELSE
SELECT id INTO myid FROM factbase WHERE hash = myhash;
END IF;
RETURN myid;
END;
$$ LANGUAGE plpgsql;
CREATE FUNCTION new_edge(from_id INTEGER, to_id INTEGER, exploit INTEGER) RETURNS INTEGER AS $$
DECLARE
myid INTEGER;
BEGIN
IF NOT EXISTS (SELECT 1 FROM edge WHERE from_node = from_id AND to_node = to_id AND exploit_id = exploit) THEN
INSERT INTO edge VALUES (DEFAULT, from_id, to_id, exploit) RETURNING id INTO myid;
ELSE
SELECT id INTO myid FROM edge WHERE from_node = from_id AND to_node = to_id AND exploit_id = exploit;
END IF;
RETURN myid;
END;
$$ LANGUAGE plpgsql;