blob: 4d8e0f3d668e8c85db40a87abf1834d96322d99c [file]
#**
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. The ASF licenses this file to You
under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. For additional information regarding
copyright in this work, please see the NOTICE file in the top level
directory of this distribution.
*#
#**
createdb.vm: Velocity template that generates vendor-specific database scripts
DON'T RUN THIS, IT'S NOT A DATABASE CREATION SCRIPT!!!
**#
-- Run this script to create the Roller database tables in your database.
-- *****************************************************
-- Create the tables and indices
create table roller_user (
id varchar(48) not null primary key,
username varchar(255) not null,
passphrase varchar(255) not null,
openid_url varchar(255),
screenname varchar(255) not null,
fullname varchar(255) not null,
emailaddress varchar(255) not null,
activationcode varchar(48),
datecreated $db.TIMESTAMP_SQL_TYPE not null,
locale varchar(20),
timezone varchar(50),
isenabled $db.BOOLEAN_SQL_TYPE_TRUE not null
);
alter table roller_user add constraint ru_username_uq unique ( username$!db.INDEXSIZE );
create table userrole (
id varchar(48) not null primary key,
rolename varchar(255) not null,
username varchar(255) not null
);
create index ur_username_idx on userrole( username$!db.INDEXSIZE );
-- actions: comma separated list of actions permitted by permission
-- objectid: for now this will always store weblogid
-- objectType: for now this will always be 'Weblog'
create table roller_permission (
id varchar(48) not null primary key,
username varchar(255) not null,
actions varchar(255),
objectid varchar(48),
objecttype varchar(255),
pending $db.BOOLEAN_SQL_TYPE_TRUE,
datecreated $db.TIMESTAMP_SQL_TYPE not null
);
-- Audit log records time and comment about change
-- user_id: user that made change
-- object_id: id of associated object, if any
-- object_class: name of associated object class (e.g. WeblogEntryData)
-- comment: description of change
-- change_time: time that change was made
create table roller_audit_log (
id varchar(48) not null primary key,
user_id varchar(48) not null,
object_id varchar(48),
object_class varchar(255),
comment_text varchar(255) not null,
change_time $db.TIMESTAMP_SQL_TYPE
);
create table weblog (
id varchar(48) not null primary key,
name varchar(255) not null,
handle varchar(255) not null,
tagline varchar(255),
creator varchar(255),
enablebloggerapi $db.BOOLEAN_SQL_TYPE_FALSE not null,
editorpage varchar(255),
bloggercatid varchar(48),
allowcomments $db.BOOLEAN_SQL_TYPE_TRUE not null,
emailcomments $db.BOOLEAN_SQL_TYPE_FALSE not null,
emailaddress varchar(255) not null,
editortheme varchar(255),
locale varchar(20),
timezone varchar(50),
defaultplugins varchar(255),
visible $db.BOOLEAN_SQL_TYPE_TRUE not null,
isactive $db.BOOLEAN_SQL_TYPE_TRUE not null,
datecreated $db.TIMESTAMP_SQL_TYPE not null,
bannedwordslist $db.TEXT_SQL_TYPE,
defaultallowcomments $db.BOOLEAN_SQL_TYPE_TRUE not null,
defaultcommentdays integer default 7 not null,
commentmod $db.BOOLEAN_SQL_TYPE_FALSE not null,
displaycnt integer default 15 not null,
lastmodified $db.TIMESTAMP_SQL_TYPE,
enablemultilang $db.BOOLEAN_SQL_TYPE_FALSE not null,
showalllangs $db.BOOLEAN_SQL_TYPE_TRUE not null,
about varchar(255),
icon varchar(255),
analyticscode $db.TEXT_SQL_TYPE
);
create index ws_visible_idx on weblog(visible);
alter table weblog add constraint ws_handle_uq unique (handle$!db.INDEXSIZE);
create table weblog_custom_template (
id varchar(48) not null primary key,
name varchar(255) not null,
description varchar(255),
link varchar(255),
websiteid varchar(48) not null,
updatetime $db.TIMESTAMP_SQL_TYPE not null,
hidden $db.BOOLEAN_SQL_TYPE_FALSE not null,
navbar $db.BOOLEAN_SQL_TYPE_FALSE not null,
outputtype varchar(48) default null,
#columnNotNullWithDefault('action' 'varchar(16)' 'custom')
);
create index wp_name_idx on weblog_custom_template(name$!db.INDEXSIZE);
create index wp_link_idx on weblog_custom_template(link$!db.INDEXSIZE);
create index wp_id_idx on weblog_custom_template(websiteid);
create table custom_template_rendition (
id varchar(48) not null primary key,
templateid varchar(48) not null,
template $db.TEXT_SQL_TYPE not null,
templatelang varchar(48),
#columnNotNullWithDefault('type' 'varchar(16)' 'STANDARD')
);
create table bookmark_folder (
id varchar(48) not null primary key,
name varchar(255) not null,
websiteid varchar(48) not null
);
create index fo_weblogid_idx on bookmark_folder( websiteid );
create table bookmark (
id varchar(48) not null primary key,
folderid varchar(48) not null,
name varchar(255) not null,
description varchar(255),
url varchar(255) not null,
priority integer default 100 not null,
image varchar(255),
feedurl varchar(255)
);
create index bm_folderid_idx on bookmark( folderid );
create table weblogcategory (
id varchar(48) not null primary key,
name varchar(255) not null,
description varchar(255),
websiteid varchar(48) not null,
image varchar(255),
position integer default 0 not null
);
create index wc_weblogid_idx on weblogcategory( websiteid );
create table weblogentry (
id varchar(48) not null primary key,
anchor varchar(255) not null,
creator varchar(255) not null,
title varchar(255) not null,
text $db.TEXT_SQL_TYPE not null,
pubtime $db.TIMESTAMP_SQL_TYPE_NULL,
updatetime $db.TIMESTAMP_SQL_TYPE not null,
websiteid varchar(48) not null,
categoryid varchar(48) not null,
publishentry $db.BOOLEAN_SQL_TYPE_TRUE not null,
link varchar(255),
plugins varchar(255),
allowcomments $db.BOOLEAN_SQL_TYPE_FALSE not null,
commentdays integer default 7 not null,
rightToLeft $db.BOOLEAN_SQL_TYPE_FALSE not null,
pinnedtomain $db.BOOLEAN_SQL_TYPE_FALSE not null,
locale varchar(20),
status varchar(20) not null,
summary $db.TEXT_SQL_TYPE default null,
content_type varchar(48) default null,
content_src varchar(255) default null,
search_description varchar(255) default null
);
create index we_weblogid_idx on weblogentry( websiteid );
create index we_categoryid_idx on weblogentry( categoryid );
create index we_pinnedtom_idx on weblogentry(pinnedtomain);
create index we_creator_idx on weblogentry(creator);
create index we_status_idx on weblogentry(status);
create index we_locale_idx on weblogentry(locale);
create index we_combo1_idx on weblogentry(status, pubtime, websiteid);
create index we_combo2_idx on weblogentry(websiteid, pubtime, status);
create table roller_weblogentrytag (
id varchar(48) not null primary key,
entryid varchar(48) not null,
websiteid varchar(48) not null,
creator varchar(255) not null,
name varchar(255) not null,
time $db.TIMESTAMP_SQL_TYPE not null
);
create index wet_entryid_idx on roller_weblogentrytag( entryid );
create index wet_weblogid_idx on roller_weblogentrytag( websiteid );
create index wet_creator_idx on roller_weblogentrytag( creator );
create index wet_name_idx on roller_weblogentrytag( name );
create table roller_weblogentrytagagg (
id varchar(48) not null primary key,
websiteid varchar(48) ,
name varchar(255) not null,
total integer not null,
lastused $db.TIMESTAMP_SQL_TYPE not null
);
create index weta_weblogid_idx on roller_weblogentrytagagg( websiteid );
create index weta_name_idx on roller_weblogentrytagagg( name );
create index weta_lastused_idx on roller_weblogentrytagagg( lastused );
alter table roller_weblogentrytagagg add constraint weta_weblog_tag_uq unique ( websiteid, name );
create table newsfeed (
id varchar(48) not null primary key,
name varchar(255) not null,
description varchar(255) not null,
link varchar(255) not null,
websiteid varchar(48) not null
);
create index nf_weblogid_idx on newsfeed( websiteid );
create table roller_comment (
id varchar(48) not null primary key,
entryid varchar(48) not null,
name varchar(255),
email varchar(255),
url varchar(255),
content $db.TEXT_SQL_TYPE,
posttime $db.TIMESTAMP_SQL_TYPE not null,
notify $db.BOOLEAN_SQL_TYPE_FALSE not null,
remotehost varchar(128),
referrer varchar(255),
useragent varchar(255),
status varchar(20) not null,
plugins varchar(255),
contenttype varchar(128) default 'text/plain' not null
);
create index co_entryid_idx on roller_comment( entryid );
create index co_status_idx on roller_comment( status );
-- Ping Feature Tables
-- name: short descriptive name of the ping target
-- pingurl: URL to receive the ping
-- conditioncode:
-- lastsuccess:
create table pingtarget (
id varchar(48) not null primary key,
name varchar(255) not null,
pingurl varchar(255) not null,
conditioncode integer default 0 not null,
lastsuccess $db.TIMESTAMP_SQL_TYPE,
autoenabled $db.BOOLEAN_SQL_TYPE_FALSE not null
);
-- auto ping configurations
-- websiteid: fk reference to weblog for which this auto ping configuration applies
-- pingtargetid: fk reference to the ping target to be pinged when the weblog changes
create table autoping (
id varchar(48) not null primary key,
websiteid varchar(48) not null,
pingtargetid varchar(48) not null
);
create index ap_websiteid_idx on autoping( websiteid );
create index ap_pingtid_idx on autoping( pingtargetid );
-- entrytime: timestamp of original entry onto the ping queue
-- pingtargetid: weak fk reference to ping target (not constrained)
-- websiteid: weak fk reference to weblog originating the ping (not constrained)
-- attempts: number of ping attempts that have been made for this entry
create table pingqueueentry (
id varchar(48) not null primary key,
entrytime $db.TIMESTAMP_SQL_TYPE not null,
pingtargetid varchar(48) not null,
websiteid varchar(48) not null,
attempts integer not null
);
create index pqe_entrytime_idx on pingqueueentry( entrytime );
create index pqe_pingtid_idx on pingqueueentry( pingtargetid );
create index pqe_websiteid_idx on pingqueueentry( websiteid );
create table roller_properties (
name varchar(255) not null primary key,
value $db.TEXT_SQL_TYPE
);
create table roller_tasklock (
id varchar(48) not null primary key,
name varchar(255) not null,
islocked $db.BOOLEAN_SQL_TYPE_FALSE,
timeacquired $db.TIMESTAMP_SQL_TYPE_NULL,
timeleased integer,
lastrun $db.TIMESTAMP_SQL_TYPE_NULL,
client varchar(255)
);
alter table roller_tasklock add constraint rtl_name_uq unique ( name$!db.INDEXSIZE );
#if($db.DBTYPE != "ORACLE")
create index rtl_taskname_idx on roller_tasklock( name );
#end
create table roller_hitcounts (
id varchar(48) not null primary key,
websiteid varchar(48) not null,
dailyhits integer
);
create index rhc_websiteid_idx on roller_hitcounts( websiteid );
create index rhc_dailyhits_idx on roller_hitcounts( dailyhits );
-- Entry attribute: metadata for weblog entries
create table entryattribute (
id varchar(48) not null primary key,
entryid varchar(48) not null,
name varchar(255) not null,
value $db.TEXT_SQL_TYPE not null
);
create index ea_entryid_idx on entryattribute( entryid );
alter table entryattribute add constraint ea_name_uq unique ( entryid, name$!db.INDEXSIZE );
-- OAUTH SUPPORT
-- each record is an OAuth consumer key and secret, can be tied to just one user
create table roller_oauthconsumer (
consumerkey varchar(48) not null primary key,
consumersecret varchar(48) not null,
username varchar(48)
);
-- each record is an OAuth accessor, always tied to just one user
create table roller_oauthaccessor (
consumerkey varchar(48) not null primary key,
requesttoken varchar(48),
accesstoken varchar(48),
tokensecret varchar(48),
created $db.TIMESTAMP_SQL_TYPE not null,
updated $db.TIMESTAMP_SQL_TYPE not null,
username varchar(48),
authorized $db.BOOLEAN_SQL_TYPE_FALSE
);
create table rag_properties (
name varchar(255) not null primary key,
value $db.TEXT_SQL_TYPE
);
-- PLANET FEED AGGREGATOR
create table rag_planet (
id varchar(48) not null primary key,
handle varchar(32) not null,
title varchar(255) not null,
description varchar(255)
);
alter table rag_planet add constraint ragp_handle_uq unique ( handle );
create table rag_group (
id varchar(48) not null primary key,
planet_id varchar(48) not null,
handle varchar(32) not null,
title varchar(255) not null,
description varchar(255),
max_page_entries integer default 30,
max_feed_entries integer default 30,
cat_restriction $db.TEXT_SQL_TYPE,
group_page varchar(255)
);
alter table rag_group add constraint ragg_handle_uq unique ( planet_id, handle );
create table rag_subscription (
id varchar(48) not null primary key,
title varchar(255) not null,
feed_url varchar(255) not null,
site_url varchar(255),
author varchar(255),
last_updated $db.TIMESTAMP_SQL_TYPE,
inbound_links integer default -1,
inbound_blogs integer default -1
);
alter table rag_subscription add constraint rags_feed_url_uq unique ( feed_url$!db.INDEXSIZE_LARGE );
create table rag_group_subscription (
group_id varchar(48) not null,
subscription_id varchar(48) not null
);
create index raggs_gid_idx on rag_group_subscription(group_id);
create index raggs_sid_idx on rag_group_subscription(subscription_id);
create table rag_entry (
id varchar(48) not null primary key,
subscription_id varchar(48) not null,
handle varchar(255),
title varchar(255),
guid varchar(255),
permalink $db.TEXT_SQL_TYPE not null,
author varchar(255),
content $db.TEXT_SQL_TYPE,
categories $db.TEXT_SQL_TYPE,
published $db.TIMESTAMP_SQL_TYPE not null,
updated $db.TIMESTAMP_SQL_TYPE
);
create index rage_sid_idx on rag_entry(subscription_id);
-- create a default planet and group
insert into rag_planet (id, handle, title) values ('zzz_default_planet_zzz', 'default', 'Default Planet');
insert into rag_group (id, planet_id, handle, title) values ('zzz_all_group_zzz', 'zzz_default_planet_zzz', 'all', 'Default Group');
-- MEDIA BLOGGING
create table roller_mediafile (
id varchar(48) not null primary key,
name varchar(255) not null,
description varchar(255),
origpath varchar(255),
content_type varchar(50) not null,
copyright_text varchar(1023),
directoryid varchar(48) not null,
weblogid varchar(48) not null,
width integer,
height integer,
size_in_bytes integer,
date_uploaded $db.TIMESTAMP_SQL_TYPE not null,
last_updated $db.TIMESTAMP_SQL_TYPE,
anchor varchar(255),
creator varchar(255),
is_public $db.BOOLEAN_SQL_TYPE_FALSE not null
);
create table roller_mediafiletag (
id varchar(48) not null primary key,
mediafile_id varchar(48) not null,
name varchar(30) not null
);
create table roller_mediafiledir (
id varchar(48) not null primary key,
name varchar(255) not null,
description varchar(255),
websiteid varchar(48) not null
);
-- *****************************************************
-- Now add the foreign key relationships
-- user, role, weblog, and permissions
-- page, entry, category, comment
alter table weblog_custom_template add constraint wct_weblogid_fk
foreign key ( websiteid ) references weblog( id ) $!db.ADDL_FK_PARAMS ;
alter table custom_template_rendition add constraint ctr_templateid_fk
foreign key ( templateid ) references weblog_custom_template( id ) $!db.ADDL_FK_PARAMS ;
alter table weblogentry add constraint we_weblogid_fk
foreign key ( websiteid ) references weblog( id ) $!db.ADDL_FK_PARAMS ;
alter table weblogentry add constraint we_categoryid_fk
foreign key ( categoryid ) references weblogcategory( id ) $!db.ADDL_FK_PARAMS ;
alter table roller_weblogentrytag add constraint rwtg_entryid_fk
foreign key ( entryid ) references weblogentry( id ) $!db.ADDL_FK_PARAMS ;
alter table weblogcategory add constraint wc_weblogid_fk
foreign key ( websiteid ) references weblog( id ) $!db.ADDL_FK_PARAMS ;
alter table roller_comment add constraint co_entryid_fk
foreign key ( entryid ) references weblogentry( id ) $!db.ADDL_FK_PARAMS ;
alter table entryattribute add constraint att_entryid_fk
foreign key ( entryid ) references weblogentry( id ) $!db.ADDL_FK_PARAMS ;
-- bookmark_folder and bookmark
alter table bookmark_folder add constraint fo_weblogid_fk
foreign key ( websiteid ) references weblog( id ) $!db.ADDL_FK_PARAMS ;
alter table bookmark add constraint bm_folderid_fk
foreign key ( folderid ) references bookmark_folder( id ) $!db.ADDL_FK_PARAMS ;
-- media file foreign key constraints
alter table roller_mediafile add constraint roller_mediafiledir_id_fk
foreign key (directoryid) references roller_mediafiledir(id) $!db.ADDL_FK_PARAMS ;
alter table roller_mediafiletag add constraint roller_mediafile_id_tag_fk
foreign key (mediafile_id) references roller_mediafile(id) $!db.ADDL_FK_PARAMS ;
alter table roller_mediafiledir add constraint mf_weblogid_fk
foreign key ( websiteid ) references weblog( id ) $!db.ADDL_FK_PARAMS ;
-- newsfeed
alter table newsfeed add constraint nf_weblogid_fk
foreign key ( websiteid ) references weblog( id ) $!db.ADDL_FK_PARAMS ;
-- autoping
alter table autoping add constraint ap_weblogid_fk
foreign key (websiteid) references weblog(id) $!db.ADDL_FK_PARAMS ;
alter table autoping add constraint ap_pingtargetid_fk
foreign key (pingtargetid) references pingtarget(id) $!db.ADDL_FK_PARAMS ;
-- oauth indexes
create index oc_username_idx on roller_oauthconsumer( username$!db.INDEXSIZE );