+CREATE SEQUENCE activity_seq;
+
CREATE TABLE patch_audit (
patch_id integer not null,
change_type varchar not null,
last_updater varchar,
last_updated_time timestamp with time zone not null
);
+ALTER TABLE patch_audit ADD COLUMN activity_id INTEGER NOT NULL
+ DEFAULT nextval('activity_seq');
CREATE OR REPLACE FUNCTION patch_audit() RETURNS trigger AS $$
DECLARE
last_updater varchar,
last_updated_time timestamp with time zone not null
);
+ALTER TABLE patch_comment_audit ADD COLUMN activity_id INTEGER NOT NULL
+ DEFAULT nextval('activity_seq');
CREATE OR REPLACE FUNCTION patch_comment_audit() RETURNS trigger AS $$
DECLARE
INNER JOIN patch p ON v.patch_id = p.id;
CREATE OR REPLACE VIEW commitfest_activity_log AS
-SELECT v.commitfest_id, v.last_updated_time, v.last_updater,
+SELECT v.activity_id, v.commitfest_id, v.last_updated_time, v.last_updater,
v.original_name AS patch_name,
p.id AS patch_id,
CASE WHEN v.change_type = 'INSERT' THEN 'New Patch'
patch_audit v
LEFT JOIN patch p ON v.patch_id = p.id
UNION ALL
-SELECT v.commitfest_id, v.last_updated_time, v.last_updater,
+SELECT v.activity_id, v.commitfest_id, v.last_updated_time, v.last_updater,
v.patch_name, v.patch_id,
CASE WHEN v.change_type = 'INSERT' THEN 'New Comment'
WHEN v.change_type = 'UPDATE' THEN 'Edit Comment'
}
my $activity = $r->db->select(<<EOM);
SELECT
- to_char(v.last_updated_time, 'YYYY-MM-DD HH24:MI:SS') AS last_updated_time,
+ v.activity_id, to_char(v.last_updated_time at time zone 'GMT',
+ 'Dy, DD Mon YYYY HH24:MI:SS') || ' GMT' AS last_updated_time,
v.last_updater, v.patch_name, v.patch_id, v.activity_type, v.details,
commitfest.name as commitfest_name
FROM
my $content;
$rss->add_item(
'guid' => 'http://commitfest.postgresql.org/activity/' .
- $row->{'patch_id'} . '/' . $row->{'last_updated_time'},
+ $row->{'activity_id'},
'title' => $row->{'commitfest_name'} . ': ' . $row->{'patch_name'},
+ 'pubDate' => $row->{'last_updated_time'},
'description' => $r->eval_template('commitfest_activity_rss',
{ 'd' => $row })
);