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