]> ruin.nu Git - ndwebbie.git/blob - database/noperl.sql
intel role
[ndwebbie.git] / database / noperl.sql
1 CREATE OR REPLACE FUNCTION find_planet_id(_ruler text, _planet text, _race race) RETURNS integer
2     AS $_$
3 DECLARE
4         p RECORD;
5         id INTEGER;
6         thread INTEGER;
7 BEGIN
8         SELECT pid, race INTO p FROM planets WHERE ruler = _ruler AND planet = _planet;
9         IF FOUND THEN
10                 IF _race <> p.race THEN
11                         UPDATE planets SET race = _race WHERE pid = p.pid;
12                 END IF;
13                 id := p.pid;
14         ELSE
15                 INSERT INTO forum_threads (fbid,subject,uid) VALUES(-2, _ruler || ' OF ' || _planet, -3)
16                         RETURNING ftid INTO thread;
17                 INSERT INTO planets(ruler,planet,race,ftid) VALUES(_ruler,_planet,_race,thread)
18                         RETURNING pid INTO id;
19         END IF;
20         RETURN id;
21 END;
22 $_$
23     LANGUAGE plpgsql;
24
25 DROP FUNCTION IF EXISTS findplanetid(character varying, character varying, character varying);
26
27 CREATE OR REPLACE FUNCTION find_alliance_id(alli text) RETURNS integer
28     AS $_$
29 DECLARE
30         id INTEGER;
31 BEGIN
32         SELECT aid FROM INTO id alliances WHERE alliance = alli;
33         IF NOT FOUND THEN
34                 INSERT INTO alliances(alliance) VALUES($1)
35                         RETURNING aid INTO id;
36         END IF;
37         RETURN id;
38 END;
39 $_$
40     LANGUAGE plpgsql;
41
42 DROP FUNCTION IF EXISTS find_alliance_id(character varying);
43
44 CREATE OR REPLACE FUNCTION coords(x integer, y integer, z integer) RETURNS text
45     AS $_$
46 SELECT $1 || ':' || $2 || ':' || $3
47 $_$
48     LANGUAGE sql IMMUTABLE;
49