/ db / test / sql /
/db/test/sql/groups
1 -- Copyright (C) 2013 The Meme Factory, Inc., http://www.meme.com/
2 --
3 -- This file is part of Gombe-MI.
4 --
5 -- Gombe-MI is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with Gombe-MI. If not, see <http://www.gnu.org/licenses/>.
17 --
18 -- Add to groups (but not groupmembers) for all (9am to 5pm)
19 -- intervals of follows 1-4.
20 --
21 -- All data appearing in this work are fictitious. Any resemblance to
22 -- actual data, living or archived, is purely coincidental.
23 --
24 -- Karl O. Pinc <kop@meme.com>
25 --
26
27 --
28 -- Main tables.
29 --
30
31 do $$
32 declare
33 this_time time;
34 this_min int;
35 this_diff int;
36 this_gid int[];
37
38 begin
39 this_time := '9:00';
40 while this_time <= '17:00' loop
41
42 this_min := extract('minute' from this_time);
43 this_diff := this_min % 5;
44
45 for fid in 1 .. 4 loop
46 -- Give each of the follows' intervals a group.
47 if this_diff = 0 then
48 -- 5 minute mark, new group
49 -- groups
50 insert into groups (gid)
51 values(nextval('groups_gid_seq'::regclass));
52
53 this_gid[fid] := currval('groups_gid_seq'::regclass);
54 end if;
55
56 -- Connect the group to an interval.
57 update intervals
58 set gid = this_gid[fid]
59 where followid = fid and time = this_time;
60 end loop;
61
62 this_time := this_time + '1 minute'::interval;
63 end loop;
64 end;
65 $$;
66