| #** |
| 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 ); |