From d7848ea808f52fa5599148eb1325e0e5d8e8c281 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Thu, 5 Jul 2012 12:08:23 +0200
Subject: [PATCH] OO-291: add support for postgresql

---
 .../database/mysql/setupDatabase.sql          |  2 ++
 .../postgresql/alter_8_1_x_to_8_2_0.sql       | 33 +++++++++++++++++++
 .../database/postgresql/setupDatabase.sql     | 26 +++++++++++++--
 3 files changed, 59 insertions(+), 2 deletions(-)
 create mode 100644 src/main/resources/database/postgresql/alter_8_1_x_to_8_2_0.sql

diff --git a/src/main/resources/database/mysql/setupDatabase.sql b/src/main/resources/database/mysql/setupDatabase.sql
index 8f5361f66a4..3c85bc2a1cc 100644
--- a/src/main/resources/database/mysql/setupDatabase.sql
+++ b/src/main/resources/database/mysql/setupDatabase.sql
@@ -1148,6 +1148,8 @@ create index  gp_type_idx on o_gp_business (businessgrouptype);
 alter table o_gp_business add index FKCEEB8A86DF6BCD14 (groupcontext_fk), add constraint FKCEEB8A86DF6BCD14 foreign key (groupcontext_fk) references o_gp_bgcontext (groupcontext_id);
 alter table o_gp_business add index FKCEEB8A86A1FAC766 (fk_ownergroup), add constraint FKCEEB8A86A1FAC766 foreign key (fk_ownergroup) references o_bs_secgroup (id);
 alter table o_gp_business add index FKCEEB8A86C06E3EF3 (fk_partipiciantgroup), add constraint FKCEEB8A86C06E3EF3 foreign key (fk_partipiciantgroup) references o_bs_secgroup (id);
+alter table o_gp_business add constraint idx_bgp_rsrc foreign key (fk_resource) references o_olatresource (resource_id);
+alter table o_gp_business add constraint idx_bgp_waiting foreign key (fk_waitinggroup) references o_bs_secgroup (id);
 alter table o_gp_business_to_resource add constraint idx_bgp_to_rsrc_rsrc foreign key (fk_resource) references o_olatresource (resource_id);
 alter table o_gp_business_to_resource add constraint idx_bgp_to_rsrc_group foreign key (fk_group) references o_gp_business (group_id);
 create index  provider_idx on o_bs_authentication (provider);
diff --git a/src/main/resources/database/postgresql/alter_8_1_x_to_8_2_0.sql b/src/main/resources/database/postgresql/alter_8_1_x_to_8_2_0.sql
new file mode 100644
index 00000000000..0f5098de509
--- /dev/null
+++ b/src/main/resources/database/postgresql/alter_8_1_x_to_8_2_0.sql
@@ -0,0 +1,33 @@
+-- relation groups to resources
+create table o_gp_business_to_resource (
+   g_id bigint not null,
+   version int4 not null,
+   creationdate timestamp,
+   fk_resource int8 not null,
+   fk_group int8 not null,
+   primary key (g_id)
+);
+alter table o_gp_business_to_resource add constraint idx_bgp_to_rsrc_rsrc foreign key (fk_resource) references o_olatresource (resource_id);
+alter table o_gp_business_to_resource add constraint idx_bgp_to_rsrc_group foreign key (fk_group) references o_gp_business (group_id);
+
+-- groups
+alter table o_gp_business add column fk_resource int8 unique default null;
+alter table o_gp_business add constraint idx_bgp_rsrc foreign key (fk_resource) references o_olatresource (resource_id);
+alter table o_gp_business add constraint idx_bgp_waiting foreign key (fk_waitinggroup) references o_bs_secgroup (id);
+
+
+-- area
+alter table o_gp_bgarea alter column groupcontext_fk drop not null;
+alter table o_gp_bgarea add column fk_resource int8 default null;
+alter table o_gp_bgarea add constraint idx_area_to_resource foreign key (fk_resource) references o_olatresource (resource_id);
+
+-- view
+create or replace view o_gp_business_to_repository_v as (
+	select 
+		grp.group_id as grp_id,
+		repoentry.repositoryentry_id as re_id,
+		repoentry.displayname as re_displayname
+	from o_gp_business as grp
+	inner join o_gp_business_to_resource as relation on (relation.fk_group = grp.group_id)
+	inner join o_repositoryentry as repoentry on (repoentry.fk_olatresource = relation.fk_resource)
+);
\ No newline at end of file
diff --git a/src/main/resources/database/postgresql/setupDatabase.sql b/src/main/resources/database/postgresql/setupDatabase.sql
index 82736308f1e..38c360d62f0 100644
--- a/src/main/resources/database/postgresql/setupDatabase.sql
+++ b/src/main/resources/database/postgresql/setupDatabase.sql
@@ -41,11 +41,20 @@ create table o_gp_business (
    waitinglist_enabled bool,
    autocloseranks_enabled bool,
    groupcontext_fk int8,
+   fk_resource int8 unique,
    fk_ownergroup int8 unique,
    fk_partipiciantgroup int8 unique,
    fk_waitinggroup int8 unique,
    primary key (group_id)
 );
+create table o_gp_business_to_resource (
+   g_id bigint not null,
+   version int4 not null,
+   creationdate timestamp,
+   fk_resource int8 not null,
+   fk_group int8 not null,
+   primary key (g_id)
+);
 create table o_temporarykey (
    reglist_id int8 not null,
    version int4 not null,
@@ -275,7 +284,8 @@ create table o_gp_bgarea (
    creationdate timestamp,
    name varchar(255) not null,
    descr text,
-   groupcontext_fk int8 not null,
+   groupcontext_fk int8,
+   fk_resource int8 default null,
    primary key (area_id)
 );
 create table o_repositoryentry (
@@ -1045,7 +1055,15 @@ create or replace view o_ep_notifications_comment_v as (
    left join o_ep_struct_el as page on (page.fk_struct_root_map_id = map.structure_id and page.structure_id = cast(ucomment.ressubpath as integer))
 );
 
-
+create or replace view o_gp_business_to_repository_v as (
+	select 
+		grp.group_id as grp_id,
+		repoentry.repositoryentry_id as re_id,
+		repoentry.displayname as re_displayname
+	from o_gp_business as grp
+	inner join o_gp_business_to_resource as relation on (relation.fk_group = grp.group_id)
+	inner join o_repositoryentry as repoentry on (repoentry.fk_olatresource = relation.fk_resource)
+);
 
 create index userrating_id_idx on o_userrating (resid);
 create index userrating_name_idx on o_userrating (resname);
@@ -1077,6 +1095,10 @@ create index gp_type_idx on o_gp_business (businessgrouptype);
 alter table o_gp_business add constraint FKCEEB8A86DF6BCD14 foreign key (groupcontext_fk) references o_gp_bgcontext;
 alter table o_gp_business add constraint FKCEEB8A86A1FAC766 foreign key (fk_ownergroup) references o_bs_secgroup;
 alter table o_gp_business add constraint FKCEEB8A86C06E3EF3 foreign key (fk_partipiciantgroup) references o_bs_secgroup;
+alter table o_gp_business add constraint idx_bgp_rsrc foreign key (fk_resource) references o_olatresource (resource_id);
+alter table o_gp_business add constraint idx_bgp_waiting foreign key (fk_waitinggroup) references o_bs_secgroup (id);
+alter table o_gp_business_to_resource add constraint idx_bgp_to_rsrc_rsrc foreign key (fk_resource) references o_olatresource (resource_id);
+alter table o_gp_business_to_resource add constraint idx_bgp_to_rsrc_group foreign key (fk_group) references o_gp_business (group_id);
 create index provider_idx on o_bs_authentication (provider);
 create index credential_idx on o_bs_authentication (credential);
 create index authusername_idx on o_bs_authentication (authusername);
-- 
GitLab