--
-- The Forums Package
--
-- @author gwong@orchardlabs.com,ben@openforce.biz
-- @creation-date 2002-05-16
--
-- This code is newly concocted by Ben, but with significant concepts and code
-- lifted from Gilbert. Thanks Orchard Labs!
--
create table forums_messages (
message_id integer
constraint forums_message_id_fk
references acs_objects (object_id)
constraint forums_messages_pk
primary key,
forum_id integer
constraint forums_mess_forum_id_fk
references forums_forums (forum_id),
subject varchar(200),
content text,
user_id integer
constraint forums_mess_user_id_fk
references users(user_id)
constraint forums_mess_user_id_nn
not null,
posting_date timestamptz
default current_timestamp
constraint forum_mess_post_date_nn
not null,
state varchar(100)
constraint forum_mess_state_ck
check (state in ('pending','approved','rejected')),
format varchar(30)
constraint forums_mess_format_ck
check (format in ('text/enhanced', 'text/markdown', 'text/plain', 'text/fixed-width', 'text/html'))
default 'text/plain',
-- Hierarchy of messages
parent_id integer
constraint forum_mess_parent_id_fk
references forums_messages (message_id),
open_p boolean
default true
constraint forum_mess_open_p_nn
not null,
tree_sortkey varbit,
max_child_sortkey varbit,
last_child_post timestamptz,
reply_count integer
constraint forums_mess_reply_count_ck
check (reply_count >= 0) default 0,
approved_reply_count integer
constraint forums_mess_app_rep_count_ck
check (approved_reply_count >= 0) default 0,
last_poster integer
constraint forums_mess_last_poster_fk
references users(user_id),
constraint forums_mess_sk_forum_un
unique (tree_sortkey, forum_id)
);
-- We do a some big queries on forum_id (thread count on index.tcl) so create a second index
-- ordered so it's useful for them
create unique index forums_mess_forum_sk_un on forums_messages(forum_id, tree_sortkey);
-- Need these two for RI checks
create index forums_messages_user_id_idx on forums_messages(user_id);
create index forums_messages_parent_id_idx on forums_messages(parent_id);
create index forum_messages_date_idx on forums_messages (forum_id, posting_date);
create or replace view forums_messages_approved
as
select *
from forums_messages
where state = 'approved';
create or replace view forums_messages_pending
as
select *
from forums_messages
where state= 'pending';
CREATE OR REPLACE FUNCTION inline_0 () RETURNS integer AS $$
BEGIN
perform acs_object_type__create_type(
'forums_message',
'Forums Message',
'Forums Messages',
'acs_object',
'forums_messages',
'message_id',
'forums_message',
'f',
null,
'forums_message__name'
);
return null;
END;
$$ LANGUAGE plpgsql;
select inline_0();
drop function inline_0 ();