Skip to content

Commit

Permalink
Patches for NULL table name, on delete cascade to clean up file stora…
Browse files Browse the repository at this point in the history
…ge from Jim Lynch
  • Loading branch information
Dave Bauer committed Oct 12, 2009
1 parent b481dfa commit 6e10b3b
Show file tree
Hide file tree
Showing 5 changed files with 77 additions and 11 deletions.
10 changes: 5 additions & 5 deletions file-storage.info
Expand Up @@ -7,7 +7,7 @@
<initial-install-p>f</initial-install-p>
<singleton-p>f</singleton-p>

<version name="5.5.0d2" url="http://openacs.org/repository/download/apm/file-storage-5.5.0d2.apm">
<version name="5.6.0d2" url="http://openacs.org/repository/download/apm/file-storage-5.6.0d2.apm">
<owner url="http://openacs.org">OpenACS</owner>
<summary>Collaborative document storage</summary>
<release-date>2007-06-15</release-date>
Expand All @@ -16,11 +16,11 @@
<maturity>0</maturity>
<package_instance_name>#file-storage.file-storage#</package_instance_name>

<provides url="file-storage" version="5.5.0d2"/>
<requires url="acs-content-repository" version="5.5.0d1"/>
<requires url="acs-kernel" version="5.5.0d1"/>
<provides url="file-storage" version="5.6.0d2"/>
<requires url="acs-content-repository" version="5.6.0d1"/>
<requires url="acs-kernel" version="5.6.0d1"/>
<requires url="categories" version="1.1.2d3"/>
<requires url="notifications" version="5.5.0d1"/>
<requires url="notifications" version="5.6.0d1"/>
<requires url="oacs-dav" version="1.1b1"/>
<requires url="rss-support" version="0.3"/>

Expand Down
15 changes: 12 additions & 3 deletions sql/oracle/file-storage-create.sql
Expand Up @@ -36,9 +36,15 @@ create table fs_root_folders (
primary key,
-- the ID of the root folder
-- JS: I removed the on delete cascade constraint on folder_id
-- DAVEB: I put it back. I have no idea what JS is referring to.
-- DAVEB: If you ever want to delete a root folder, say by deleting a
-- DAVEB: package instance of file-storage, you need this.
-- DAVEB: You DO have to delete all the folder contents and use CR pl/sql
-- DAVEB: procs to delete the folder, when you do that the on delete
-- DAVEB: cascade works fine.
folder_id integer
constraint fs_root_folder_folder_id_fk
references cr_folders
references cr_folders on delete cascade
constraint fs_root_folder_folder_id_un
unique
);
Expand All @@ -48,6 +54,9 @@ create table fs_root_folders (
-- To enable site-wide search to distinguish CR items as File Storage items
-- we create an item subtype of content_item in the ACS Object Model

-- DAVEB: acs_object_types supports a null table name so we do that
-- instead of passing a false value so we can actually use the
-- content repository instead of duplicating all the code in file-storage
set escape on

declare
Expand All @@ -58,8 +67,8 @@ begin
pretty_name => 'File Storage Object',
pretty_plural => 'File Storage Objects',
supertype => 'content_revision',
table_name => 'fs_root_folders',
id_column => 'folder_id',
table_name => NULL,
id_column => NULL,
name_method => 'file_storage.get_title'
);

Expand Down
26 changes: 26 additions & 0 deletions sql/oracle/upgrade/upgrade-5.6.0d1-5.6.0d2.sql
@@ -0,0 +1,26 @@
-- Don't use a fake table name, acs_objects supports types that don't have
-- a type specific table
update acs_object_types set
table_name = NULL,
id_column = NULL
where
object_type = 'file_storage_object';

begin
content_type.refresh_view('file_storage_object');
content_type.refresh_trigger('file_storage_object');
end;
/

alter table
fs_root_folders
drop constraint
fs_root_folder_folder_id_fk;

alter table
fs_root_folders
add constraint
fs_root_folder_folder_id_fk
foreign key (folder_id)
references cr_folders
on delete cascade;
15 changes: 12 additions & 3 deletions sql/postgresql/file-storage-create.sql
Expand Up @@ -36,9 +36,15 @@ create table fs_root_folders (
-- the ID of the root folder
-- JS: I removed the on delete cascade constraint on folder_id
-- JS: It is superfluous, and causes a lot of RI headaches
-- DAVEB: I put it back. I have no idea what JS is referring to.
-- DAVEB: If you ever want to delete a root folder, say by deleting a
-- DAVEB: package instance of file-storage, you need this.
-- DAVEB: You DO have to delete all the folder contents and use CR pl/sql
-- DAVEB: procs to delete the folder, when you do that the on delete
-- DAVEB: cascade works fine.
folder_id integer
constraint fs_root_folder_folder_id_fk
references cr_folders
references cr_folders on delete cascade
constraint fs_root_folder_folder_id_un
unique
);
Expand All @@ -52,8 +58,11 @@ select content_type__create_type (
-- first, before item metadata
'File Storage Object', -- pretty_name
'File Storage Objects', -- pretty_plural
'fs_root_folders', -- table_name
'folder_id', -- id_column
NULL, -- table_name
-- DAVEB: acs_object_types supports a null table name so we do that
-- instead of passing a false value so we can actually use the
-- content repository instead of duplicating all the code in file-storage
NULL, -- id_column
'file_storage__get_title' -- name_method
);

Expand Down
22 changes: 22 additions & 0 deletions sql/postgresql/upgrade/upgrade-5.6.0d1-5.6.0d2.sql
@@ -0,0 +1,22 @@
-- Don't use a fake table name, acs_objects supports types that don't have
-- a type specific table
update acs_object_types set
table_name = NULL,
id_column = NULL
where
object_type = 'file_storage_object';
select content_type__refresh_view('file_storage_object');
select content_type__refresh_trigger('file_storage_object');

alter table
fs_root_folders
drop constraint
fs_root_folder_folder_id_fk;

alter table
fs_root_folders
add constraint
fs_root_folder_folder_id_fk
foreign key (folder_id)
references cr_folders
on delete cascade;

0 comments on commit 6e10b3b

Please sign in to comment.