]> ruin.nu Git - ndwebbie.git/blob - database/claims.sql
intel role
[ndwebbie.git] / database / claims.sql
1 DROP TRIGGER IF EXISTS update_target ON raid_claims;
2 DROP TRIGGER IF EXISTS unclaim_target ON raid_claims;
3
4 DROP FUNCTION IF EXISTS updated_target();
5 DROP FUNCTION IF EXISTS unclaim_target();
6
7 CREATE OR REPLACE FUNCTION updated_claim() RETURNS trigger
8     AS $_X$
9 DECLARE
10         target INTEGER;
11 BEGIN
12         CASE TG_OP
13         WHEN 'INSERT' THEN
14                 target := NEW.target;
15         WHEN 'UPDATE' THEN
16                 target := NEW.target;
17                 IF NEW.launched AND NOT OLD.launched THEN
18                         UPDATE users
19                         SET attack_points = attack_points + 1
20                         WHERE uid = OLD.uid;
21
22                         INSERT INTO forum_posts (ftid,uid,message)
23                         VALUES((SELECT ftid FROM users WHERE uid = NEW.uid),NEW.uid
24                                 ,'Gave attack point for confirmation of attack on target '
25                                         || NEW.target || ', wave ' || NEW.wave
26                                 );
27                 END IF;
28         WHEN 'DELETE' THEN
29                 target := OLD.target;
30
31                 IF OLD.launched THEN
32                         UPDATE users
33                         SET attack_points = attack_points - 1
34                         WHERE uid = OLD.uid;
35                 END IF;
36         END CASE;
37         UPDATE raid_targets SET modified = NOW() WHERE id = target;
38         RETURN NEW;
39 END;
40 $_X$ LANGUAGE plpgsql;
41
42
43 CREATE TRIGGER updated_claim
44   AFTER INSERT OR DELETE OR UPDATE ON raid_claims
45   FOR EACH ROW EXECUTE PROCEDURE updated_claim();
46