From ae0bf416e7b15a0732a3b3834517a2a55076862a Mon Sep 17 00:00:00 2001 From: uhensler <none@none> Date: Mon, 12 Jun 2017 11:23:32 +0200 Subject: [PATCH] OO-2723: store the webfeed in the database instead of xml files to enhance the reliability of blogs and podcasts --- .../olat/modules/webFeed/model/ItemImpl.java | 1 + .../_spring/databaseUpgradeContext.xml | 4 ++ .../database/mysql/alter_11_5_x_to_12_0_0.sql | 52 +++++++++++++++++++ .../database/mysql/setupDatabase.sql | 1 - .../oracle/alter_11_5_x_to_12_0_0.sql | 48 +++++++++++++++++ .../database/oracle/setupDatabase.sql | 1 - .../postgresql/alter_11_5_x_to_12_0_0.sql | 48 +++++++++++++++++ .../database/postgresql/setupDatabase.sql | 1 - 8 files changed, 153 insertions(+), 3 deletions(-) create mode 100644 src/main/resources/database/mysql/alter_11_5_x_to_12_0_0.sql create mode 100644 src/main/resources/database/oracle/alter_11_5_x_to_12_0_0.sql create mode 100644 src/main/resources/database/postgresql/alter_11_5_x_to_12_0_0.sql diff --git a/src/main/java/org/olat/modules/webFeed/model/ItemImpl.java b/src/main/java/org/olat/modules/webFeed/model/ItemImpl.java index e769d14d409..3b02d6db3a5 100644 --- a/src/main/java/org/olat/modules/webFeed/model/ItemImpl.java +++ b/src/main/java/org/olat/modules/webFeed/model/ItemImpl.java @@ -131,6 +131,7 @@ public class ItemImpl implements Item, Serializable { this.feed = feed; } + @SuppressWarnings("unused") private ItemImpl() { // make Hibernate happy } diff --git a/src/main/java/org/olat/upgrade/_spring/databaseUpgradeContext.xml b/src/main/java/org/olat/upgrade/_spring/databaseUpgradeContext.xml index 6dc91bcec10..4bd885cfc81 100644 --- a/src/main/java/org/olat/upgrade/_spring/databaseUpgradeContext.xml +++ b/src/main/java/org/olat/upgrade/_spring/databaseUpgradeContext.xml @@ -140,6 +140,10 @@ <constructor-arg index="0" value="OLAT_11.5.0" /> <property name="alterDbStatements" value="alter_11_4_x_to_11_5_0.sql" /> </bean> + <bean id="database_upgrade_12_0_0" class="org.olat.upgrade.DatabaseUpgrade"> + <constructor-arg index="0" value="OLAT_12.0.0" /> + <property name="alterDbStatements" value="alter_11_5_x_to_12_0_0.sql" /> + </bean> </list> </property> </bean> diff --git a/src/main/resources/database/mysql/alter_11_5_x_to_12_0_0.sql b/src/main/resources/database/mysql/alter_11_5_x_to_12_0_0.sql new file mode 100644 index 00000000000..f7c4811912e --- /dev/null +++ b/src/main/resources/database/mysql/alter_11_5_x_to_12_0_0.sql @@ -0,0 +1,52 @@ +-- webfeed +create table o_feed ( + id bigint not null auto_increment, + creationdate datetime not null, + lastmodified datetime not null, + f_resourceable_id bigint, + f_resourceable_type varchar(64), + f_type varchar(20), + f_title varchar(1024), + f_description varchar(1024), + f_author varchar(255), + f_image_name varchar(255), + f_external boolean, + f_external_feed_url varchar(1024), + f_external_image_url varchar(1024), + primary key (id) +); + +create table o_feed_item ( + id bigint not null auto_increment, + creationdate datetime not null, + lastmodified datetime not null, + f_title varchar(1024), + f_description mediumtext, + f_content mediumtext, + f_author varchar(255), + f_guid varchar(255), + f_external_link varchar(1024), + f_draft boolean, + f_publish_date datetime, + f_width bigint, + f_height bigint, + f_filename varchar(1024), + f_type varchar(255), + f_length bigint, + f_external_url varchar(1024), + fk_feed_id bigint not null, + fk_identity_author_id bigint, + fk_identity_modified_id bigint, + primary key (id) +); + +alter table o_feed ENGINE = InnoDB; +alter table o_feed_item ENGINE = InnoDB; + +create index idx_feed_resourceable_idx on o_feed (f_resourceable_id, f_resourceable_type); +alter table o_feed_item add constraint item_to_feed_fk foreign key(fk_feed_id) references o_feed(id); +create index idx_item_feed_idx on o_feed_item(fk_feed_id); +alter table o_feed_item add constraint feed_item_to_ident_author_fk foreign key (fk_identity_author_id) references o_bs_identity (id); +create index idx_item_ident_author_idx on o_feed_item(fk_identity_author_id); +alter table o_feed_item add constraint feed_item_to_ident_modified_fk foreign key (fk_identity_modified_id) references o_bs_identity (id); +create index idx_item_ident_modified_idx on o_feed_item(fk_identity_modified_id); diff --git a/src/main/resources/database/mysql/setupDatabase.sql b/src/main/resources/database/mysql/setupDatabase.sql index 29f91becabe..0312702aa9d 100644 --- a/src/main/resources/database/mysql/setupDatabase.sql +++ b/src/main/resources/database/mysql/setupDatabase.sql @@ -2763,7 +2763,6 @@ alter table o_feed_item add constraint feed_item_to_ident_author_fk foreign key create index idx_item_ident_author_idx on o_feed_item(fk_identity_author_id); alter table o_feed_item add constraint feed_item_to_ident_modified_fk foreign key (fk_identity_modified_id) references o_bs_identity (id); create index idx_item_ident_modified_idx on o_feed_item(fk_identity_modified_id); -create index idx_item_guid_idx on o_feed_item (f_guid); -- o_logging_table create index log_target_resid_idx on o_loggingtable(targetresid); diff --git a/src/main/resources/database/oracle/alter_11_5_x_to_12_0_0.sql b/src/main/resources/database/oracle/alter_11_5_x_to_12_0_0.sql new file mode 100644 index 00000000000..16b66f781af --- /dev/null +++ b/src/main/resources/database/oracle/alter_11_5_x_to_12_0_0.sql @@ -0,0 +1,48 @@ +-- webfeed +create table o_feed ( + id number(20) generated always as identity, + creationdate date not null, + lastmodified date not null, + f_resourceable_id number(20), + f_resourceable_type varchar(64), + f_title varchar(1024), + f_description varchar(1024), + f_author varchar(255), + f_image_name varchar(255), + f_external number(2) default 0, + f_external_feed_url varchar(1024), + f_external_image_url varchar(1024), + primary key (id) +); + +create table o_feed_item ( + id number(20) generated always as identity, + creationdate date not null, + lastmodified date not null, + f_title varchar(1024), + f_description clob, + f_content clob, + f_author varchar(255), + f_guid varchar(255), + f_external_link varchar(1024), + f_draft number(2) default 0, + f_publish_date date, + f_width number(20), + f_height number(20), + f_filename varchar(1024), + f_type varchar(255), + f_length number(20), + f_external_url varchar(1024), + fk_feed_id number(20), + fk_identity_author_id number(20), + fk_identity_modified_id number(20), + primary key (id) +); + +create index idx_feed_resourceable_idx on o_feed (f_resourceable_id, f_resourceable_type); +alter table o_feed_item add constraint item_to_feed_fk foreign key(fk_feed_id) references o_feed(id); +create index idx_item_feed_idx on o_feed_item(fk_feed_id); +alter table o_feed_item add constraint feed_item_to_ident_author_fk foreign key (fk_identity_author_id) references o_bs_identity (id); +create index idx_item_ident_author_idx on o_feed_item (fk_identity_author_id); +alter table o_feed_item add constraint feed_item_to_ident_modified_fk foreign key (fk_identity_modified_id) references o_bs_identity (id); +create index idx_item_ident_modified_idx on o_feed_item (fk_identity_modified_id); diff --git a/src/main/resources/database/oracle/setupDatabase.sql b/src/main/resources/database/oracle/setupDatabase.sql index d7d05acaa6c..7a1c814cb4a 100644 --- a/src/main/resources/database/oracle/setupDatabase.sql +++ b/src/main/resources/database/oracle/setupDatabase.sql @@ -2954,7 +2954,6 @@ alter table o_feed_item add constraint feed_item_to_ident_author_fk foreign key create index idx_item_ident_author_idx on o_feed_item (fk_identity_author_id); alter table o_feed_item add constraint feed_item_to_ident_modified_fk foreign key (fk_identity_modified_id) references o_bs_identity (id); create index idx_item_ident_modified_idx on o_feed_item (fk_identity_modified_id); -create index idx_item_guid_idx on o_feed_item (f_guid); -- o_logging_table create index log_target_resid_idx on o_loggingtable(targetresid); diff --git a/src/main/resources/database/postgresql/alter_11_5_x_to_12_0_0.sql b/src/main/resources/database/postgresql/alter_11_5_x_to_12_0_0.sql new file mode 100644 index 00000000000..12b1a85e905 --- /dev/null +++ b/src/main/resources/database/postgresql/alter_11_5_x_to_12_0_0.sql @@ -0,0 +1,48 @@ +-- webfeed +create table o_feed ( + id bigserial not null, + creationdate timestamp not null, + lastmodified timestamp not null, + f_resourceable_id bigint, + f_resourceable_type varchar(64), + f_title varchar(1024), + f_description varchar(1024), + f_author varchar(255), + f_image_name varchar(255), + f_external boolean, + f_external_feed_url varchar(1024), + f_external_image_url varchar(1024), + primary key (id) +); + +create table o_feed_item ( + id bigserial not null, + creationdate timestamp not null, + lastmodified timestamp not null, + f_title varchar(1024), + f_description text, + f_content text, + f_author varchar(255), + f_guid varchar(255), + f_external_link varchar(1024), + f_draft boolean, + f_publish_date timestamp, + f_width int8, + f_height int8, + f_filename varchar(1024), + f_type varchar(255), + f_length bigint, + f_external_url varchar(1024), + fk_feed_id bigint, + fk_identity_author_id int8, + fk_identity_modified_id int8, + primary key (id) +); + +create index idx_feed_resourceable_idx on o_feed (f_resourceable_id, f_resourceable_type); +alter table o_feed_item add constraint item_to_feed_fk foreign key(fk_feed_id) references o_feed(id); +create index idx_item_feed_idx on o_feed_item(fk_feed_id); +alter table o_feed_item add constraint feed_item_to_ident_author_fk foreign key (fk_identity_author_id) references o_bs_identity (id); +create index idx_item_ident_author_idx on o_feed_item (fk_identity_author_id); +alter table o_feed_item add constraint feed_item_to_ident_modified_fk foreign key (fk_identity_modified_id) references o_bs_identity (id); +create index idx_item_ident_modified_idx on o_feed_item (fk_identity_modified_id); diff --git a/src/main/resources/database/postgresql/setupDatabase.sql b/src/main/resources/database/postgresql/setupDatabase.sql index 84a9cb94f38..d1d3f9760b1 100644 --- a/src/main/resources/database/postgresql/setupDatabase.sql +++ b/src/main/resources/database/postgresql/setupDatabase.sql @@ -2805,7 +2805,6 @@ alter table o_feed_item add constraint feed_item_to_ident_author_fk foreign key create index idx_item_ident_author_idx on o_feed_item (fk_identity_author_id); alter table o_feed_item add constraint feed_item_to_ident_modified_fk foreign key (fk_identity_modified_id) references o_bs_identity (id); create index idx_item_ident_modified_idx on o_feed_item (fk_identity_modified_id); -create index idx_item_guid_idx on o_feed_item (f_guid); -- o_logging_table create index log_target_resid_idx on o_loggingtable(targetresid); -- GitLab