--
BEGIN;
CREATE OR REPLACE FUNCTION entity_save(
in_entity_id int, in_name text, in_entity_class INT
) RETURNS INT AS $$
DECLARE
e entity;
e_id int;
BEGIN
select * into e from entity where id = in_entity_id;
update
entity
SET
name = in_name,
entity_class = in_entity_class
WHERE
id = in_entity_id;
IF NOT FOUND THEN
-- do the insert magic.
e_id = nextval('entity_id_seq');
insert into entity (id, name, entity_class) values
(e_id,
in_name,
in_entity_class
);
return e_id;
END IF;
return in_entity_id;
END;
$$ language 'plpgsql';
CREATE OR REPLACE FUNCTION entity__list_classes ()
RETURNS SETOF entity_class AS $$
DECLARE out_row entity_class;
BEGIN
FOR out_row IN
SELECT * FROM entity_class
WHERE active
ORDER BY id
LOOP
RETURN NEXT out_row;
END LOOP;
END;
$$ LANGUAGE PLPGSQL;
CREATE OR REPLACE FUNCTION entity__get_entity (
in_entity_id int
) RETURNS setof entity AS $$
declare
v_row entity;
BEGIN
SELECT * INTO v_row FROM entity WHERE id = in_entity_id;
IF NOT FOUND THEN
raise exception 'Could not find entity with ID %', in_entity_id;
ELSE
return next v_row;
END IF;
END;
$$ language plpgsql;
commit;
spilot.dk/old?h=master'>logtreecommitdiff