diff --git a/src/main/resources/database/mysql/alter_9_4_0_to_10_0_0.sql b/src/main/resources/database/mysql/alter_9_4_0_to_10_0_0.sql new file mode 100644 index 0000000000000000000000000000000000000000..463235b6ff08ae6da3896b6c4e157ffcb30eba89 --- /dev/null +++ b/src/main/resources/database/mysql/alter_9_4_0_to_10_0_0.sql @@ -0,0 +1,374 @@ +alter table o_gp_business add column fk_group_id bigint; +alter table o_gp_business modify businessgrouptype varchar(15) null default null; + +alter table o_repositoryentry modify softkey varchar(36) not null unique; +alter table o_repositoryentry modify launchcounter bigint null default 0; +alter table o_repositoryentry modify downloadcounter bigint null default 0; + +alter table o_ep_struct_el add column fk_group_id bigint; + + +-- repository entry statistics table +create table o_repositoryentry_stats ( + id bigint not null, + creationdate datetime not null, + lastmodified datetime not null, + r_rating decimal(65,30), + r_num_of_ratings bigint not null default 0, + r_num_of_comments bigint not null default 0, + r_launchcounter bigint not null default 0, + r_downloadcounter bigint not null default 0, + r_lastusage datetime not null, + primary key (id) +); + +alter table o_repositoryentry add column fk_stats bigint; +alter table o_repositoryentry add column authors varchar(2048); + +insert into o_repositoryentry_stats (id, creationdate, lastmodified, r_rating, r_launchcounter, r_downloadcounter, r_lastusage) + select re.repositoryentry_id, now(), now(), null, re.launchcounter, re.downloadcounter, re.lastusage from o_repositoryentry as re where re.fk_stats is null; +update o_repositoryentry set fk_stats=repositoryentry_id where fk_stats is null; + +alter table o_repositoryentry modify fk_stats bigint not null; +alter table o_repositoryentry add constraint repoentry_stats_ctx foreign key (fk_stats) references o_repositoryentry_stats (id); + +-- base group +create table o_bs_group ( + id bigint not null, + creationdate datetime not null, + g_name varchar(36), + primary key (id) +); + +create table o_bs_group_member ( + id bigint not null, + creationdate datetime not null, + lastmodified datetime not null, + g_role varchar(50) not null, + fk_group_id bigint not null, + fk_identity_id bigint not null, + primary key (id) +); + +create table o_re_to_group ( + id bigint not null, + creationdate datetime not null, + r_defgroup boolean not null, + fk_group_id bigint not null, + fk_entry_id bigint not null, + primary key (id) +); + +create table o_bs_grant ( + id bigint not null, + creationdate datetime not null, + g_role varchar(32) not null, + g_permission varchar(32) not null, + fk_group_id bigint not null, + fk_resource_id bigint not null, + primary key (id) +); + +alter table o_bs_group_member add constraint member_identity_ctx foreign key (fk_identity_id) references o_bs_identity (id); +alter table o_bs_group_member add constraint member_group_ctx foreign key (fk_group_id) references o_bs_group (id); +create index member_to_grp_role_idx on o_bs_group_member (g_role); + +alter table o_re_to_group add constraint re_to_group_group_ctx foreign key (fk_group_id) references o_bs_group (id); +alter table o_re_to_group add constraint re_to_group_re_ctx foreign key (fk_entry_id) references o_repositoryentry (repositoryentry_id); + +alter table o_gp_business add constraint gp_to_group_business_ctx foreign key (fk_group_id) references o_bs_group (id); + + +-- managed groups +drop view o_gp_business_v; +create or replace view o_gp_business_v as ( + select + gp.group_id as group_id, + gp.groupname as groupname, + gp.lastmodified as lastmodified, + gp.creationdate as creationdate, + gp.lastusage as lastusage, + gp.descr as descr, + gp.minparticipants as minparticipants, + gp.maxparticipants as maxparticipants, + gp.waitinglist_enabled as waitinglist_enabled, + gp.autocloseranks_enabled as autocloseranks_enabled, + gp.external_id as external_id, + gp.managed_flags as managed_flags, + (select count(part.id) from o_bs_group_member as part where part.fk_group_id = gp.fk_group_id and part.g_role='participant') as num_of_participants, + (select count(pending.reservation_id) from o_ac_reservation as pending where pending.fk_resource = gp.fk_resource) as num_of_pendings, + (select count(own.id) from o_bs_group_member as own where own.fk_group_id = gp.fk_group_id and own.g_role='coach') as num_of_owners, + (case when gp.waitinglist_enabled = true + then + (select count(waiting.id) from o_bs_group_member as waiting where waiting.fk_group_id = gp.fk_group_id and waiting.g_role='waiting') + else + 0 + end) as num_waiting, + (select count(offer.offer_id) from o_ac_offer as offer + where offer.fk_resource_id = gp.fk_resource + and offer.is_valid=true + and (offer.validfrom is null or offer.validfrom <= current_timestamp()) + and (offer.validto is null or offer.validto >= current_timestamp()) + ) as num_of_valid_offers, + (select count(offer.offer_id) from o_ac_offer as offer + where offer.fk_resource_id = gp.fk_resource + and offer.is_valid=true + ) as num_of_offers, + (select count(relation.fk_entry_id) from o_re_to_group as relation + where relation.fk_group_id = gp.fk_group_id + ) as num_of_relations, + gp.fk_resource as fk_resource, + gp.fk_group_id as fk_group_id + from o_gp_business as gp +); + +drop view o_bs_gp_membership_v; +create or replace view o_bs_gp_membership_v as ( + select + membership.id as membership_id, + membership.fk_identity_id as fk_identity_id, + membership.lastmodified as lastmodified, + membership.creationdate as creationdate, + membership.g_role as g_role, + gp.group_id as group_id + from o_bs_group_member as membership + inner join o_gp_business as gp on (gp.fk_group_id=membership.fk_group_id) +); + +drop view o_gp_member_v; +create or replace view o_gp_member_v as ( + select + gp.group_id as bg_id, + gp.groupname as bg_name, + gp.creationdate as bg_creationdate, + gp.managed_flags as bg_managed_flags, + gp.descr as bg_desc, + membership.fk_identity_id as member_id + from o_gp_business as gp + inner join o_bs_group_member as membership on (membership.fk_group_id = gp.fk_group_id and membership.g_role in ('coach','participant')) +); + +drop view o_gp_business_to_repository_v; +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_re_to_group as relation on (relation.fk_group_id = grp.fk_group_id) + inner join o_repositoryentry as repoentry on (repoentry.repositoryentry_id = relation.fk_entry_id) +); + +-- contacts +drop view o_gp_contactkey_v; +create view o_gp_contactkey_v as ( + select + bg_member.id as membership_id, + bg_member.fk_identity_id as member_id, + bg_member.g_role as membership_role, + bg_me.fk_identity_id as me_id, + bgroup.group_id as bg_id + from o_gp_business as bgroup + inner join o_bs_group_member as bg_member on (bg_member.fk_group_id = bgroup.fk_group_id) + inner join o_bs_group_member as bg_me on (bg_me.fk_group_id = bgroup.fk_group_id) + where + (bgroup.ownersintern=true and bg_member.g_role='coach') + or + (bgroup.participantsintern=true and bg_member.g_role='participant') +); + +drop view o_gp_contactext_v; +create view o_gp_contactext_v as ( + select + bg_member.id as membership_id, + bg_member.fk_identity_id as member_id, + bg_member.g_role as membership_role, + id_member.name as member_name, + first_member.propvalue as member_firstname, + last_member.propvalue as member_lastname, + bg_me.fk_identity_id as me_id, + bgroup.group_id as bg_id, + bgroup.group_id as bg_name + from o_gp_business as bgroup + inner join o_bs_group_member as bg_member on (bg_member.fk_group_id = bgroup.fk_group_id) + inner join o_bs_identity as id_member on (bg_member.fk_identity_id = id_member.id) + inner join o_user as us_member on (id_member.fk_user_id = us_member.user_id) + inner join o_userproperty as first_member on (first_member.fk_user_id = us_member.user_id and first_member.propname='firstName') + inner join o_userproperty as last_member on (last_member.fk_user_id = us_member.user_id and last_member.propname='lastName') + inner join o_bs_group_member as bg_me on (bg_me.fk_group_id = bgroup.fk_group_id) + where + (bgroup.ownersintern=true and bg_member.g_role='coach') + or + (bgroup.participantsintern=true and bg_member.g_role='participant') +); + +drop view o_re_membership_v; +create or replace view o_re_membership_v as ( + select + bmember.id as membership_id, + bmember.creationdate as creationdate, + bmember.lastmodified as lastmodified, + bmember.fk_identity_id as fk_identity_id, + bmember.g_role as g_role, + re.repositoryentry_id as fk_entry_id + from o_repositoryentry as re + inner join o_re_to_group relgroup on (relgroup.fk_entry_id=re.repositoryentry_id) + inner join o_bs_group_member as bmember on (bmember.fk_group_id=relgroup.fk_group_id) +); + +-- coaching +drop view o_as_eff_statement_students_v; +create view o_as_eff_statement_students_v as ( + select + sg_re.repositoryentry_id as re_id, + sg_coach.fk_identity_id as tutor_id, + sg_participant.fk_identity_id as student_id, + sg_statement.id as st_id, + (case when sg_statement.passed = true then 1 else 0 end) as st_passed, + (case when sg_statement.passed = false then 1 else 0 end) as st_failed, + (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted, + sg_statement.score as st_score, + pg_initial_launch.id as pg_id + from o_repositoryentry as sg_re + inner join o_re_to_group as togroup on (togroup.fk_entry_id = sg_re.repositoryentry_id) + inner join o_bs_group_member as sg_coach on (sg_coach.fk_group_id=togroup.fk_group_id and sg_coach.g_role='coach') + inner join o_bs_group_member as sg_participant on (sg_participant.fk_group_id=sg_coach.fk_group_id and sg_participant.g_role='participant') + left join o_as_eff_statement as sg_statement on (sg_statement.fk_identity = sg_participant.fk_identity_id and sg_statement.fk_resource_id = sg_re.fk_olatresource) + left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_re.fk_olatresource and pg_initial_launch.fk_identity = sg_participant.fk_identity_id) +); + +drop view o_as_eff_statement_courses_v; +create view o_as_eff_statement_courses_v as ( + select + sg_re.repositoryentry_id as re_id, + sg_re.displayname as re_name, + sg_coach.fk_identity_id as tutor_id, + sg_participant.fk_identity_id as student_id, + sg_statement.id as st_id, + (case when sg_statement.passed = true then 1 else 0 end) as st_passed, + (case when sg_statement.passed = false then 1 else 0 end) as st_failed, + (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted, + sg_statement.score as st_score, + pg_initial_launch.id as pg_id + from o_repositoryentry as sg_re + inner join o_re_to_group as togroup on (togroup.fk_entry_id = sg_re.repositoryentry_id) + inner join o_bs_group_member as sg_coach on (sg_coach.fk_group_id=togroup.fk_group_id and sg_coach.g_role='coach') + inner join o_bs_group_member as sg_participant on (sg_participant.fk_group_id=sg_coach.fk_group_id and sg_participant.g_role='participant') + left join o_as_eff_statement as sg_statement on (sg_statement.fk_identity = sg_participant.fk_identity_id and sg_statement.fk_resource_id = sg_re.fk_olatresource) + left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_re.fk_olatresource and pg_initial_launch.fk_identity = sg_participant.fk_identity_id) +); + +drop view o_as_eff_statement_groups_v; +create view o_as_eff_statement_groups_v as ( + select + sg_re.repositoryentry_id as re_id, + sg_re.displayname as re_name, + sg_bg.group_id as bg_id, + sg_bg.groupname as bg_name, + sg_coach.fk_identity_id as tutor_id, + sg_participant.fk_identity_id as student_id, + sg_statement.id as st_id, + (case when sg_statement.passed = true then 1 else 0 end) as st_passed, + (case when sg_statement.passed = false then 1 else 0 end) as st_failed, + (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted, + sg_statement.score as st_score, + pg_initial_launch.id as pg_id + from o_repositoryentry as sg_re + inner join o_re_to_group as togroup on (togroup.fk_entry_id = sg_re.repositoryentry_id) + inner join o_gp_business as sg_bg on (sg_bg.fk_group_id=togroup.fk_group_id) + inner join o_bs_group_member as sg_coach on (sg_coach.fk_group_id=togroup.fk_group_id and sg_coach.g_role='coach') + inner join o_bs_group_member as sg_participant on (sg_participant.fk_group_id=sg_coach.fk_group_id and sg_participant.g_role='participant') + left join o_as_eff_statement as sg_statement on (sg_statement.fk_identity = sg_participant.fk_identity_id and sg_statement.fk_resource_id = sg_re.fk_olatresource) + left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_re.fk_olatresource and pg_initial_launch.fk_identity = sg_participant.fk_identity_id) +); + +-- new views +drop view o_repositoryentry_my_v; +create view o_repositoryentry_my_v as ( + select + re.repositoryentry_id as re_id, + re.creationdate as re_creationdate, + re.lastmodified as re_lastmodified, + re.displayname as re_displayname, + re.description as re_description, + re.authors as re_authors, + re.accesscode as re_accesscode, + re.membersonly as re_membersonly, + re.statuscode as re_statuscode, + re.fk_lifecycle as fk_lifecycle, + re.fk_olatresource as fk_olatresource, + courseinfos.initiallaunchdate as ci_initiallaunchdate, + courseinfos.recentlaunchdate as ci_recentlaunchdate, + courseinfos.visit as ci_visit, + courseinfos.timespend as ci_timespend, + effstatement.score as eff_score, + effstatement.passed as eff_passed, + mark.mark_id as mark_id, + rating.rating as rat_rating, + stats.r_rating as stats_rating, + stats.r_num_of_ratings as stats_num_of_ratings, + stats.r_num_of_comments as stats_num_of_comments, + ident.id as member_id, + (select count(offer.offer_id) from o_ac_offer as offer + where offer.fk_resource_id = re.fk_olatresource + and offer.is_valid=true + and (offer.validfrom is null or offer.validfrom <= current_timestamp()) + and (offer.validto is null or offer.validto >= current_timestamp()) + ) as num_of_valid_offers, + (select count(offer.offer_id) from o_ac_offer as offer + where offer.fk_resource_id = re.fk_olatresource + and offer.is_valid=true + ) as num_of_offers + from o_repositoryentry as re + cross join o_bs_identity as ident + inner join o_repositoryentry_stats as stats on (re.fk_stats=stats.id) + left join o_mark as mark on (mark.creator_id=ident.id and re.repositoryentry_id=mark.resid and mark.resname='RepositoryEntry') + left join o_as_eff_statement as effstatement on (effstatement.fk_identity=ident.id and effstatement.fk_resource_id = re.fk_olatresource) + left join o_userrating as rating on (rating.creator_id=ident.id and re.repositoryentry_id=rating.resid and rating.resname='RepositoryEntry') + left join o_as_user_course_infos as courseinfos on (courseinfos.fk_identity=ident.id and re.fk_olatresource=courseinfos.fk_resource_id) +); + + +-- drop views +drop view o_gp_visible_participant_v; +drop view o_gp_contact_participant_v; +drop view o_gp_visible_owner_v; +drop view o_gp_contact_owner_v; +drop view o_gp_contactkey_participant_v; +drop view o_gp_contactkey_owner_v; + +drop view o_re_tutor_v; +drop view o_re_participant_v; + +drop view o_gp_contextresource_2_group_v; + +drop view o_as_eff_statement_grouped_v; +drop view o_as_eff_statement_members_v; +drop view o_as_eff_statement_members_strict_v; + +-- drop constraints and index +alter table o_gp_business drop foreign key FKCEEB8A86DF6BCD14; +alter table o_gp_business drop foreign key FKCEEB8A86A1FAC766; +alter table o_gp_business drop foreign key FKCEEB8A86C06E3EF3; +alter table o_gp_business drop foreign key idx_bgp_rsrc; +alter table o_gp_business drop foreign key idx_bgp_waiting; + +alter table o_repositoryentry drop foreign key FK2F9C439888C31018; +alter table o_repositoryentry drop foreign key FK2F9C4398A1FAC766; +alter table o_repositoryentry drop foreign key repo_tutor_sec_group_ctx; +alter table o_repositoryentry drop foreign key repo_parti_sec_group_ctx; + +alter table o_repositorymetadata drop foreign key FKDB97A6493F14E3EE; + +alter table o_bookmark drop foreign key FK68C4E30663219E27; + +alter table o_gp_business_to_resource drop foreign key idx_bgp_to_rsrc_rsrc; +alter table o_gp_business_to_resource drop foreign key idx_bgp_to_rsrc_group; + +alter table o_gp_bgcontext drop foreign key FK1C154FC47E4A0638; +alter table o_gp_bgcontextresource_rel drop foreign key FK9903BEAC9F9C3F1D; +alter table o_gp_bgcontextresource_rel drop foreign key FK9903BEACDF6BCD14; + +alter table o_gp_bgarea drop foreign key FK9EFAF698DF6BCD14; + +alter table o_ep_struct_el drop foreign key FKF26C8375236F29X; \ No newline at end of file diff --git a/src/main/resources/database/mysql/setupDatabase.sql b/src/main/resources/database/mysql/setupDatabase.sql index f98478c3e0c257e9b0cedf2d71804cc9e8d9f73b..c82dbfbcc10b97f73c102d4ad9896fc9a38306a1 100644 --- a/src/main/resources/database/mysql/setupDatabase.sql +++ b/src/main/resources/database/mysql/setupDatabase.sql @@ -29,13 +29,40 @@ create table if not exists o_bs_secgroup ( creationdate datetime, primary key (id) ); + +create table o_bs_group ( + id bigint not null, + creationdate datetime not null, + g_name varchar(36), + primary key (id) +); + +create table o_bs_group_member ( + id bigint not null, + creationdate datetime not null, + lastmodified datetime not null, + g_role varchar(50) not null, + fk_group_id bigint not null, + fk_identity_id bigint not null, + primary key (id) +); + +create table o_bs_grant ( + id bigint not null, + creationdate datetime not null, + g_role varchar(32) not null, + g_permission varchar(32) not null, + fk_group_id bigint not null, + fk_resource_id bigint not null, + primary key (id) +); + create table if not exists o_gp_business ( group_id bigint not null, version mediumint unsigned not null, lastmodified datetime, creationdate datetime, lastusage datetime, - businessgrouptype varchar(15) not null, groupname varchar(255), external_id varchar(64), managed_flags varchar(255), @@ -51,21 +78,10 @@ create table if not exists o_gp_business ( participantspublic bit not null default 0, waitingpublic bit not null default 0, downloadmembers bit not null default 0, - groupcontext_fk bigint, fk_resource bigint unique, - fk_ownergroup bigint unique, - fk_partipiciantgroup bigint unique, - fk_waitinggroup bigint unique, + fk_group_id bigint unique, primary key (group_id) ); -create table if not exists o_gp_business_to_resource ( - g_id bigint not null, - version mediumint unsigned not null, - creationdate datetime, - fk_resource bigint not null, - fk_group bigint not null, - primary key (g_id) -); create table if not exists o_temporarykey ( reglist_id bigint not null, version mediumint unsigned not null, @@ -175,17 +191,6 @@ create table if not exists o_note ( notetext longtext, primary key (note_id) ); -create table if not exists o_gp_bgcontext ( - groupcontext_id bigint not null, - version mediumint unsigned not null, - creationdate datetime, - name varchar(255) not null, - descr longtext, - grouptype varchar(15) not null, - ownergroup_fk bigint unique, - defaultcontext bit not null, - primary key (groupcontext_id) -); create table if not exists o_references ( reference_id bigint not null, version mediumint unsigned not null, @@ -195,15 +200,6 @@ create table if not exists o_references ( userdata varchar(64), primary key (reference_id) ); -create table if not exists o_repositorymetadata ( - metadataelement_id bigint not null, - version mediumint unsigned not null, - creationdate datetime, - name varchar(255) not null, - value longtext not null, - fk_repositoryentry bigint not null, - primary key (fk_repositoryentry, metadataelement_id) -); create table if not exists o_user ( user_id bigint not null, version mediumint unsigned not null, @@ -222,14 +218,6 @@ create table if not exists o_userproperty ( propvalue varchar(255), primary key (fk_user_id, propname) ); -create table if not exists o_gp_bgcontextresource_rel ( - groupcontextresource_id bigint not null, - version mediumint unsigned not null, - creationdate datetime, - oresource_id bigint not null, - groupcontext_fk bigint not null, - primary key (groupcontextresource_id) -); create table if not exists o_message ( message_id bigint not null, version mediumint unsigned not null, @@ -299,7 +287,6 @@ create table if not exists o_gp_bgarea ( creationdate datetime, name varchar(255) not null, descr longtext, - groupcontext_fk bigint, fk_resource bigint default null, primary key (area_id) ); @@ -308,18 +295,16 @@ create table if not exists o_repositoryentry ( version mediumint unsigned not null, lastmodified datetime, creationdate datetime, - lastusage datetime, softkey varchar(30) not null unique, external_id varchar(64), external_ref varchar(64), managed_flags varchar(255), displayname varchar(110) not null, resourcename varchar(100) not null, + authors varchar(2048), + fk_stats bigint not null unique, fk_lifecycle bigint, fk_olatresource bigint unique, - fk_ownergroup bigint unique, - fk_tutorgroup bigint, - fk_participantgroup bigint, description longtext, initialauthor varchar(128) not null, accesscode integer not null default 0, @@ -329,10 +314,16 @@ create table if not exists o_repositoryentry ( candownload bit not null, cancopy bit not null, canreference bit not null, - launchcounter bigint not null, - downloadcounter bigint not null, primary key (repositoryentry_id) ); +create table o_re_to_group ( + id bigint not null, + creationdate datetime not null, + r_defgroup boolean not null, + fk_group_id bigint not null, + fk_entry_id bigint not null, + primary key (id) +); create table o_repositoryentry_cycle ( id bigint not null, creationdate datetime not null, @@ -344,18 +335,17 @@ create table o_repositoryentry_cycle ( r_validto datetime, primary key (id) ); -create table if not exists o_bookmark ( - bookmark_id bigint not null, - version mediumint unsigned not null, - creationdate datetime, - owner_id bigint not null, - title varchar(255) not null, - description longtext, - detaildata varchar(255), - displayrestype varchar(50) not null, - olatrestype varchar(50) not null, - olatreskey bigint, - primary key (bookmark_id) +create table o_repositoryentry_stats ( + id bigint not null, + creationdate datetime not null, + lastmodified datetime not null, + r_rating decimal(65,30), + r_num_of_ratings bigint not null default 0, + r_num_of_comments bigint not null default 0, + r_launchcounter bigint not null default 0, + r_downloadcounter bigint not null default 0, + r_lastusage datetime not null, + primary key (id) ); create table if not exists o_bs_membership ( id bigint not null, @@ -367,6 +357,7 @@ create table if not exists o_bs_membership ( primary key (id), unique (secgroup_id, identity_id) ); + create table if not exists o_plock ( plock_id bigint not null, version mediumint unsigned not null, @@ -376,7 +367,7 @@ create table if not exists o_plock ( ); create table if not exists hibernate_unique_key ( - next_hi integer + next_hi integer ); create table if not exists o_lifecycle ( @@ -402,8 +393,8 @@ create table if not exists oc_lock ( create table if not exists o_readmessage ( id bigint not null, - version mediumint unsigned not null, - creationdate datetime, + version mediumint unsigned not null, + creationdate datetime, identity_id bigint not null, forum_id bigint not null, message_id bigint not null, @@ -411,11 +402,9 @@ create table if not exists o_readmessage ( ); create table if not exists o_loggingtable ( - log_id bigint not null, creationdate datetime, sourceclass varchar(255), - sessionid varchar(255) not null, user_id bigint, username varchar(255), @@ -431,13 +420,11 @@ create table if not exists o_loggingtable ( userproperty10 varchar(255), userproperty11 varchar(255), userproperty12 varchar(255), - actioncrudtype varchar(1) not null, actionverb varchar(16) not null, actionobject varchar(32) not null, simpleduration bigint not null, resourceadminaction boolean not null, - businesspath varchar(2048), greatgrandparentrestype varchar(32), greatgrandparentresid varchar(64), @@ -462,7 +449,6 @@ create table if not exists o_checklist ( description longtext, primary key (checklist_id) ); -alter table o_checklist ENGINE = InnoDB; create table if not exists o_checkpoint ( checkpoint_id bigint not null, @@ -784,7 +770,7 @@ create table if not exists o_ep_struct_el ( fk_struct_root_id bigint, fk_struct_root_map_id bigint, fk_map_source_id bigint, - fk_ownergroup bigint, + fk_group_id bigint, fk_olatresource bigint not null, primary key (structure_id) ); @@ -1291,7 +1277,6 @@ create table o_ex_task_modifier ( primary key (id) ); - -- user view create view o_bs_identity_short_v as ( select @@ -1310,27 +1295,7 @@ create view o_bs_identity_short_v as ( left join o_userproperty as p_email on (us.user_id = p_email.fk_user_id and p_email.propName = 'email') ); -create view o_gp_contextresource_2_group_v as ( - select - cg_bg2resource.groupcontextresource_id as groupcontextresource_id, - cg_bgcontext.groupcontext_id as groupcontext_id, - cg_bgroup.group_id as group_id, - cg_bg2resource.oresource_id as oresource_id, - cg_bgcontext.grouptype as grouptype, - cg_bgcontext.defaultcontext as defaultcontext, - cg_bgroup.groupname as groupname, - cg_bgroup.fk_ownergroup as fk_ownergroup, - cg_bgroup.fk_partipiciantgroup as fk_partipiciantgroup, - cg_bgroup.fk_waitinggroup as fk_waitinggroup - from o_gp_bgcontextresource_rel as cg_bg2resource - inner join o_gp_bgcontext as cg_bgcontext on (cg_bg2resource.groupcontext_fk = cg_bgcontext.groupcontext_id) - inner join o_gp_business as cg_bgroup on (cg_bg2resource.groupcontext_fk = cg_bgroup.groupcontext_fk) -); - -- eportfolio views --- views - --- notifications for e-portfolio create or replace view o_ep_notifications_struct_v as ( select struct.structure_id as struct_id, @@ -1365,7 +1330,7 @@ create or replace view o_ep_notifications_art_v as ( inner join o_ep_artefact as artefact on (artefact_link.fk_artefact_id = artefact.artefact_id) left join o_ep_struct_el as root_struct on (struct.fk_struct_root_id = root_struct.structure_id) ); - + create or replace view o_ep_notifications_rating_v as ( select urating.rating_id as rating_id, @@ -1397,54 +1362,41 @@ 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 = ucomment.ressubpath) ); -create or replace view o_gp_business_to_repository_v as ( +create 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) + inner join o_re_to_group as relation on (relation.fk_group_id = grp.fk_group_id) + inner join o_repositoryentry as repoentry on (repoentry.repositoryentry_id = relation.fk_entry_id) ); -create or replace view o_bs_gp_membership_v as ( +create view o_bs_gp_membership_v as ( select membership.id as membership_id, - membership.identity_id as identity_id, + membership.fk_identity_id as fk_identity_id, membership.lastmodified as lastmodified, membership.creationdate as creationdate, - owned_gp.group_id as owned_gp_id, - participant_gp.group_id as participant_gp_id, - waiting_gp.group_id as waiting_gp_id - from o_bs_membership as membership - left join o_gp_business as owned_gp on (membership.secgroup_id = owned_gp.fk_ownergroup) - left join o_gp_business as participant_gp on (membership.secgroup_id = participant_gp.fk_partipiciantgroup) - left join o_gp_business as waiting_gp on (membership.secgroup_id = waiting_gp.fk_waitinggroup) - where (owned_gp.group_id is not null or participant_gp.group_id is not null or waiting_gp.group_id is not null) + membership.g_role as g_role, + gp.group_id as group_id + from o_bs_group_member as membership + inner join o_gp_business as gp on (gp.fk_group_id=membership.fk_group_id) ); -create or replace view o_gp_member_v as +create or replace view o_gp_member_v as ( select gp.group_id as bg_id, gp.groupname as bg_name, gp.creationdate as bg_creationdate, gp.managed_flags as bg_managed_flags, gp.descr as bg_desc, - membership.identity_id as member_id - from o_bs_membership membership - inner join o_gp_business gp on (membership.secgroup_id = gp.fk_ownergroup) - union select - gp.group_id as bg_id, - gp.groupname as bg_name, - gp.creationdate as bg_creationdate, - gp.managed_flags as bg_managed_flags, - gp.descr as bg_desc, - membership.identity_id as member_id - from o_bs_membership membership - inner join o_gp_business gp on (membership.secgroup_id = gp.fk_partipiciantgroup) -; + membership.fk_identity_id as member_id + from o_gp_business as gp + inner join o_bs_group_member as membership on (membership.fk_group_id = gp.fk_group_id and membership.g_role in ('coach','participant')) +); -create or replace view o_gp_business_v as ( +create view o_gp_business_v as ( select gp.group_id as group_id, gp.groupname as groupname, @@ -1458,229 +1410,195 @@ create or replace view o_gp_business_v as ( gp.autocloseranks_enabled as autocloseranks_enabled, gp.external_id as external_id, gp.managed_flags as managed_flags, - (select count(part.id) from o_bs_membership as part where part.secgroup_id = gp.fk_partipiciantgroup) as num_of_participants, + (select count(part.id) from o_bs_group_member as part where part.fk_group_id = gp.fk_group_id and part.g_role='participant') as num_of_participants, (select count(pending.reservation_id) from o_ac_reservation as pending where pending.fk_resource = gp.fk_resource) as num_of_pendings, - (select count(own.id) from o_bs_membership as own where own.secgroup_id = gp.fk_ownergroup) as num_of_owners, - (case when gp.waitinglist_enabled = 1 + (select count(own.id) from o_bs_group_member as own where own.fk_group_id = gp.fk_group_id and own.g_role='coach') as num_of_owners, + (case when gp.waitinglist_enabled = true then - (select count(waiting.id) from o_bs_membership as waiting where waiting.secgroup_id = gp.fk_partipiciantgroup) + (select count(waiting.id) from o_bs_group_member as waiting where waiting.fk_group_id = gp.fk_group_id and waiting.g_role='waiting') else 0 end) as num_waiting, (select count(offer.offer_id) from o_ac_offer as offer where offer.fk_resource_id = gp.fk_resource - and offer.is_valid=1 + and offer.is_valid=true and (offer.validfrom is null or offer.validfrom <= current_timestamp()) and (offer.validto is null or offer.validto >= current_timestamp()) ) as num_of_valid_offers, (select count(offer.offer_id) from o_ac_offer as offer where offer.fk_resource_id = gp.fk_resource - and offer.is_valid=1 + and offer.is_valid=true ) as num_of_offers, - (select count(relation.fk_resource) from o_gp_business_to_resource as relation - where relation.fk_group = gp.group_id + (select count(relation.fk_entry_id) from o_re_to_group as relation + where relation.fk_group_id = gp.fk_group_id ) as num_of_relations, gp.fk_resource as fk_resource, - gp.fk_ownergroup as fk_ownergroup, - gp.fk_partipiciantgroup as fk_partipiciantgroup, - gp.fk_waitinggroup as fk_waitinggroup + gp.fk_group_id as fk_group_id from o_gp_business as gp ); create or replace view o_re_membership_v as ( select - membership.id as membership_id, - membership.identity_id as identity_id, - membership.lastmodified as lastmodified, - membership.creationdate as creationdate, - re_owner_member.repositoryentry_id as owner_re_id, - re_owner_member.fk_olatresource as owner_ores_id, - re_tutor_member.repositoryentry_id as tutor_re_id, - re_tutor_member.fk_olatresource as tutor_ores_id, - re_part_member.repositoryentry_id as participant_re_id, - re_part_member.fk_olatresource as participant_ores_id - from o_bs_membership as membership - left join o_repositoryentry as re_part_member on (membership.secgroup_id = re_part_member.fk_participantgroup) - left join o_repositoryentry as re_tutor_member on (membership.secgroup_id = re_tutor_member.fk_tutorgroup) - left join o_repositoryentry as re_owner_member on (membership.secgroup_id = re_owner_member.fk_ownergroup) -); - -create or replace view o_re_participant_v as -select - re1.repositoryentry_id as re1_id, - re2.repositoryentry_id as re2_id, - case when re1.repositoryentry_id is null then re2.repositoryentry_id else re1.repositoryentry_id end as re_id, - bs_member.identity_id as member_id - from o_bs_membership as bs_member - left join o_gp_business as bgroup on (bs_member.secgroup_id = bgroup.fk_partipiciantgroup) - left join o_gp_business_to_resource as bgroup_rel on (bgroup.group_id = bgroup_rel.fk_group) - left join o_repositoryentry as re1 on (bs_member.secgroup_id = re1.fk_participantgroup) - left join o_repositoryentry as re2 on (re2.fk_olatresource = bgroup_rel.fk_resource) - where re1.repositoryentry_id is not null or re2.repositoryentry_id is not null -; - -create or replace view o_re_tutor_v as -select - re1.repositoryentry_id as re1_id, - re2.repositoryentry_id as re2_id, - case when re1.repositoryentry_id is null then re2.repositoryentry_id else re1.repositoryentry_id end as re_id, - bs_member.identity_id as member_id - from o_bs_membership as bs_member - left join o_gp_business as bgroup on (bs_member.secgroup_id = bgroup.fk_ownergroup) - left join o_gp_business_to_resource as bgroup_rel on (bgroup.group_id = bgroup_rel.fk_group) - left join o_repositoryentry as re1 on (bs_member.secgroup_id = re1.fk_tutorgroup) - left join o_repositoryentry as re2 on (re2.fk_olatresource = bgroup_rel.fk_resource) - where re1.repositoryentry_id is not null or re2.repositoryentry_id is not null -; - + bmember.id as membership_id, + bmember.creationdate as creationdate, + bmember.lastmodified as lastmodified, + bmember.fk_identity_id as fk_identity_id, + bmember.g_role as g_role, + re.repositoryentry_id as fk_entry_id + from o_repositoryentry as re + inner join o_re_to_group relgroup on (relgroup.fk_entry_id=re.repositoryentry_id) + inner join o_bs_group_member as bmember on (bmember.fk_group_id=relgroup.fk_group_id) +); + +create view o_repositoryentry_my_v as ( + select + re.repositoryentry_id as re_id, + re.creationdate as re_creationdate, + re.lastmodified as re_lastmodified, + re.displayname as re_displayname, + re.description as re_description, + re.authors as re_authors, + re.accesscode as re_accesscode, + re.membersonly as re_membersonly, + re.statuscode as re_statuscode, + re.fk_lifecycle as fk_lifecycle, + re.fk_olatresource as fk_olatresource, + courseinfos.initiallaunchdate as ci_initiallaunchdate, + courseinfos.recentlaunchdate as ci_recentlaunchdate, + courseinfos.visit as ci_visit, + courseinfos.timespend as ci_timespend, + effstatement.score as eff_score, + effstatement.passed as eff_passed, + mark.mark_id as mark_id, + rating.rating as rat_rating, + stats.r_rating as stats_rating, + stats.r_num_of_ratings as stats_num_of_ratings, + stats.r_num_of_comments as stats_num_of_comments, + ident.id as member_id, + (select count(offer.offer_id) from o_ac_offer as offer + where offer.fk_resource_id = re.fk_olatresource + and offer.is_valid=true + and (offer.validfrom is null or offer.validfrom <= current_timestamp()) + and (offer.validto is null or offer.validto >= current_timestamp()) + ) as num_of_valid_offers, + (select count(offer.offer_id) from o_ac_offer as offer + where offer.fk_resource_id = re.fk_olatresource + and offer.is_valid=true + ) as num_of_offers + from o_repositoryentry as re + cross join o_bs_identity as ident + inner join o_repositoryentry_stats as stats on (re.fk_stats=stats.id) + left join o_mark as mark on (mark.creator_id=ident.id and re.repositoryentry_id=mark.resid and mark.resname='RepositoryEntry') + left join o_as_eff_statement as effstatement on (effstatement.fk_identity=ident.id and effstatement.fk_resource_id = re.fk_olatresource) + left join o_userrating as rating on (rating.creator_id=ident.id and re.repositoryentry_id=rating.resid and rating.resname='RepositoryEntry') + left join o_as_user_course_infos as courseinfos on (courseinfos.fk_identity=ident.id and re.fk_olatresource=courseinfos.fk_resource_id) +); + -- contacts -create or replace view o_gp_contact_participant_v as +create view o_gp_contactkey_v as ( select - bg_part_member.id as membership_id, - bgroup.group_id as bg_id, - bgroup.groupname as bg_name, - bgroup.fk_partipiciantgroup as bg_part_sec_id, - bgroup.fk_ownergroup as bg_owner_sec_id, - bg_part_member.identity_id as bg_part_member_id, - ident.name as bg_part_member_name + bg_member.id as membership_id, + bg_member.fk_identity_id as member_id, + bg_member.g_role as membership_role, + bg_me.fk_identity_id as me_id, + bgroup.group_id as bg_id from o_gp_business as bgroup - inner join o_bs_membership as bg_part_member on (bg_part_member.secgroup_id = bgroup.fk_partipiciantgroup) - inner join o_bs_identity as ident on (bg_part_member.identity_id = ident.id) - where bgroup.participantsintern=1 -; - -create or replace view o_gp_contact_owner_v as + inner join o_bs_group_member as bg_member on (bg_member.fk_group_id = bgroup.fk_group_id) + inner join o_bs_group_member as bg_me on (bg_me.fk_group_id = bgroup.fk_group_id) + where + (bgroup.ownersintern=true and bg_member.g_role='coach') + or + (bgroup.participantsintern=true and bg_member.g_role='participant') +); + +create view o_gp_contactext_v as ( select - bg_owner_member.id as membership_id, + bg_member.id as membership_id, + bg_member.fk_identity_id as member_id, + bg_member.g_role as membership_role, + id_member.name as member_name, + first_member.propvalue as member_firstname, + last_member.propvalue as member_lastname, + bg_me.fk_identity_id as me_id, bgroup.group_id as bg_id, - bgroup.groupname as bg_name, - bgroup.fk_partipiciantgroup as bg_part_sec_id, - bgroup.fk_ownergroup as bg_owner_sec_id, - bg_owner_member.identity_id as bg_owner_member_id, - ident.name as bg_owner_member_name + bgroup.group_id as bg_name from o_gp_business as bgroup - inner join o_bs_membership as bg_owner_member on (bg_owner_member.secgroup_id = bgroup.fk_ownergroup) - inner join o_bs_identity as ident on (bg_owner_member.identity_id = ident.id) - where bgroup.ownersintern=1 -; + inner join o_bs_group_member as bg_member on (bg_member.fk_group_id = bgroup.fk_group_id) + inner join o_bs_identity as id_member on (bg_member.fk_identity_id = id_member.id) + inner join o_user as us_member on (id_member.fk_user_id = us_member.user_id) + inner join o_userproperty as first_member on (first_member.fk_user_id = us_member.user_id and first_member.propname='firstName') + inner join o_userproperty as last_member on (last_member.fk_user_id = us_member.user_id and last_member.propname='lastName') + inner join o_bs_group_member as bg_me on (bg_me.fk_group_id = bgroup.fk_group_id) + where + (bgroup.ownersintern=true and bg_member.g_role='coach') + or + (bgroup.participantsintern=true and bg_member.g_role='participant') +); -create or replace view o_gp_contactkey_participant_v as - select - bg_part_member.id as membership_id, - bgroup.fk_partipiciantgroup as bg_part_sec_id, - bgroup.fk_ownergroup as bg_owner_sec_id, - bg_part_member.identity_id as bg_part_member_id - from o_gp_business as bgroup - inner join o_bs_membership as bg_part_member on (bg_part_member.secgroup_id = bgroup.fk_partipiciantgroup) - where bgroup.participantsintern=1 -; - -create or replace view o_gp_contactkey_owner_v as +-- coaching +create view o_as_eff_statement_students_v as ( select - bg_owner_member.id as membership_id, - bgroup.fk_partipiciantgroup as bg_part_sec_id, - bgroup.fk_ownergroup as bg_owner_sec_id, - bg_owner_member.identity_id as bg_owner_member_id - from o_gp_business as bgroup - inner join o_bs_membership as bg_owner_member on (bg_owner_member.secgroup_id = bgroup.fk_ownergroup) - where bgroup.ownersintern=1 -; + sg_re.repositoryentry_id as re_id, + sg_coach.fk_identity_id as tutor_id, + sg_participant.fk_identity_id as student_id, + sg_statement.id as st_id, + (case when sg_statement.passed = true then 1 else 0 end) as st_passed, + (case when sg_statement.passed = false then 1 else 0 end) as st_failed, + (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted, + sg_statement.score as st_score, + pg_initial_launch.id as pg_id + from o_repositoryentry as sg_re + inner join o_re_to_group as togroup on (togroup.fk_entry_id = sg_re.repositoryentry_id) + inner join o_bs_group_member as sg_coach on (sg_coach.fk_group_id=togroup.fk_group_id and sg_coach.g_role='coach') + inner join o_bs_group_member as sg_participant on (sg_participant.fk_group_id=sg_coach.fk_group_id and sg_participant.g_role='participant') + left join o_as_eff_statement as sg_statement on (sg_statement.fk_identity = sg_participant.fk_identity_id and sg_statement.fk_resource_id = sg_re.fk_olatresource) + left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_re.fk_olatresource and pg_initial_launch.fk_identity = sg_participant.fk_identity_id) +); --- coaching -create or replace view o_as_eff_statement_groups_v as ( +create view o_as_eff_statement_courses_v as ( select sg_re.repositoryentry_id as re_id, sg_re.displayname as re_name, - sg_bg.group_id as bg_id, - sg_bg.groupname as bg_name, - sg_tutorMembership.identity_id as tutor_id, - sg_studentMembership.identity_id as student_id, + sg_coach.fk_identity_id as tutor_id, + sg_participant.fk_identity_id as student_id, sg_statement.id as st_id, - (case when sg_statement.passed = 1 then 1 else 0 end) as st_passed, - (case when sg_statement.passed = 0 then 1 else 0 end) as st_failed, + (case when sg_statement.passed = true then 1 else 0 end) as st_passed, + (case when sg_statement.passed = false then 1 else 0 end) as st_failed, (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted, sg_statement.score as st_score, pg_initial_launch.id as pg_id from o_repositoryentry as sg_re - inner join o_olatresource as sg_reResource on (sg_re.fk_olatresource = sg_reResource.resource_id and sg_reResource.resname = 'CourseModule') - inner join o_gp_business_to_resource as sg_bg2resource on (sg_bg2resource.fk_resource = sg_reResource.resource_id) - inner join o_gp_business as sg_bg on (sg_bg.group_id = sg_bg2resource.fk_group) - inner join o_bs_membership as sg_tutorMembership on (sg_bg.fk_ownergroup = sg_tutorMembership.secgroup_id) - inner join o_bs_membership as sg_studentMembership on (sg_bg.fk_partipiciantgroup = sg_studentMembership.secgroup_id) - left join o_as_eff_statement as sg_statement on (sg_statement.fk_resource_id = sg_reResource.resource_id and sg_statement.fk_identity = sg_studentMembership.identity_id) - left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_reResource.resource_id and pg_initial_launch.fk_identity = sg_studentMembership.identity_id) - group by sg_re.repositoryentry_id, sg_re.displayname, sg_bg.group_id, sg_bg.groupname, sg_tutorMembership.identity_id, - sg_studentMembership.identity_id, sg_statement.id, sg_statement.score, pg_initial_launch.id -); - -create or replace view o_as_eff_statement_grouped_v as ( + inner join o_re_to_group as togroup on (togroup.fk_entry_id = sg_re.repositoryentry_id) + inner join o_bs_group_member as sg_coach on (sg_coach.fk_group_id=togroup.fk_group_id and sg_coach.g_role='coach') + inner join o_bs_group_member as sg_participant on (sg_participant.fk_group_id=sg_coach.fk_group_id and sg_participant.g_role='participant') + left join o_as_eff_statement as sg_statement on (sg_statement.fk_identity = sg_participant.fk_identity_id and sg_statement.fk_resource_id = sg_re.fk_olatresource) + left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_re.fk_olatresource and pg_initial_launch.fk_identity = sg_participant.fk_identity_id) +); + +create view o_as_eff_statement_groups_v as ( select sg_re.repositoryentry_id as re_id, sg_re.displayname as re_name, - sg_tutorMembership.identity_id as tutor_id, - sg_studentMembership.identity_id as student_id, + sg_bg.group_id as bg_id, + sg_bg.groupname as bg_name, + sg_coach.fk_identity_id as tutor_id, + sg_participant.fk_identity_id as student_id, sg_statement.id as st_id, - (case when sg_statement.passed = 1 then 1 else 0 end) as st_passed, - (case when sg_statement.passed = 0 then 1 else 0 end) as st_failed, + (case when sg_statement.passed = true then 1 else 0 end) as st_passed, + (case when sg_statement.passed = false then 1 else 0 end) as st_failed, (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted, sg_statement.score as st_score, pg_initial_launch.id as pg_id from o_repositoryentry as sg_re - inner join o_olatresource as sg_reResource on (sg_re.fk_olatresource = sg_reResource.resource_id and sg_reResource.resname = 'CourseModule') - inner join o_gp_business_to_resource as sg_bg2resource on (sg_bg2resource.fk_resource = sg_reResource.resource_id) - inner join o_gp_business as sg_bg on (sg_bg.group_id = sg_bg2resource.fk_group) - inner join o_bs_membership as sg_tutorMembership on (sg_bg.fk_ownergroup = sg_tutorMembership.secgroup_id) - inner join o_bs_membership as sg_studentMembership on (sg_bg.fk_partipiciantgroup = sg_studentMembership.secgroup_id) - left join o_as_eff_statement as sg_statement on (sg_statement.fk_resource_id = sg_reResource.resource_id and sg_statement.fk_identity = sg_studentMembership.identity_id) - left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_reResource.resource_id and pg_initial_launch.fk_identity = sg_studentMembership.identity_id) - group by sg_re.repositoryentry_id, sg_re.displayname, sg_tutorMembership.identity_id, - sg_studentMembership.identity_id, sg_statement.id, sg_statement.score, pg_initial_launch.id -); - -create or replace view o_as_eff_statement_members_v as ( - select - sm_re.repositoryentry_id as re_id, - sm_re.displayname as re_name, - sm_tutorMembership.identity_id as tutor_id, - sm_studentMembership.identity_id as student_id, - sm_statement.id as st_id, - (case when sm_statement.passed = 1 then 1 else 0 end) as st_passed, - (case when sm_statement.passed = 0 then 1 else 0 end) as st_failed, - (case when sm_statement.passed is null then 1 else 0 end) as st_not_attempted, - sm_statement.score as st_score, - pm_initial_launch.id as pg_id - from o_repositoryentry as sm_re - inner join o_olatresource as sm_reResource on (sm_re.fk_olatresource = sm_reResource.resource_id and sm_reResource.resname = 'CourseModule') - inner join o_bs_membership as sm_tutorMembership on (sm_re.fk_tutorgroup = sm_tutorMembership.secgroup_id) - inner join o_bs_membership as sm_studentMembership on (sm_re.fk_participantgroup = sm_studentMembership.secgroup_id) - left join o_as_eff_statement as sm_statement on (sm_statement.fk_resource_id = sm_reResource.resource_id and sm_statement.fk_identity = sm_studentMembership.identity_id) - left join o_as_user_course_infos as pm_initial_launch on (pm_initial_launch.fk_resource_id = sm_reResource.resource_id and pm_initial_launch.fk_identity = sm_studentMembership.identity_id) -); - -create or replace view o_as_eff_statement_members_strict_v as ( - select - sm_re.repositoryentry_id as re_id, - sm_re.displayname as re_name, - sm_tutorMembership.identity_id as tutor_id, - sm_studentMembership.identity_id as student_id, - sm_statement.id as st_id, - (case when sm_statement.passed = 1 then 1 else 0 end) as st_passed, - (case when sm_statement.passed = 0 then 1 else 0 end) as st_failed, - (case when sm_statement.passed is null then 1 else 0 end) as st_not_attempted, - sm_statement.score as st_score, - pm_initial_launch.id as pg_id - from o_repositoryentry as sm_re - inner join o_olatresource as sm_reResource on ( - sm_re.fk_olatresource = sm_reResource.resource_id - and sm_reResource.resname = 'CourseModule' - and not exists (select * from o_gp_business_to_resource as sm_re2group where sm_reResource.resource_id = sm_re2group.fk_resource) - ) - inner join o_bs_membership as sm_tutorMembership on (sm_re.fk_tutorgroup = sm_tutorMembership.secgroup_id) - inner join o_bs_membership as sm_studentMembership on (sm_re.fk_participantgroup = sm_studentMembership.secgroup_id) - left join o_as_eff_statement as sm_statement on (sm_statement.fk_resource_id = sm_reResource.resource_id and sm_statement.fk_identity = sm_studentMembership.identity_id) - left join o_as_user_course_infos as pm_initial_launch on (pm_initial_launch.fk_resource_id = sm_reResource.resource_id and pm_initial_launch.fk_identity = sm_studentMembership.identity_id) + inner join o_re_to_group as togroup on (togroup.fk_entry_id = sg_re.repositoryentry_id) + inner join o_gp_business as sg_bg on (sg_bg.fk_group_id=togroup.fk_group_id) + inner join o_bs_group_member as sg_coach on (sg_coach.fk_group_id=togroup.fk_group_id and sg_coach.g_role='coach') + inner join o_bs_group_member as sg_participant on (sg_participant.fk_group_id=sg_coach.fk_group_id and sg_participant.g_role='participant') + left join o_as_eff_statement as sg_statement on (sg_statement.fk_identity = sg_participant.fk_identity_id and sg_statement.fk_resource_id = sg_re.fk_olatresource) + left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_re.fk_olatresource and pg_initial_launch.fk_identity = sg_participant.fk_identity_id) ); +-- instant messaging create or replace view o_im_roster_entry_v as ( select entry.id as re_id, @@ -1697,7 +1615,6 @@ create or replace view o_im_roster_entry_v as ( inner join o_bs_identity as ident on (entry.fk_identity_id = ident.id) ); - -- views with rating create or replace view o_qp_item_v as ( select @@ -1889,8 +1806,7 @@ alter table hibernate_unique_key ENGINE = InnoDB; alter table o_forum ENGINE = InnoDB; alter table o_property ENGINE = InnoDB; alter table o_bs_secgroup ENGINE = InnoDB; -alter table o_repositoryentry_cycle ENGINE = InnoDB; -alter table o_repositorymetadata ENGINE = InnoDB; +alter table o_repositoryentry_cycle ENGINE = InnoDB; alter table o_lti_outcome ENGINE = InnoDB; alter table o_user ENGINE = InnoDB; alter table o_userproperty ENGINE = InnoDB; @@ -1905,11 +1821,8 @@ alter table o_bs_policy ENGINE = InnoDB; alter table o_bs_namedgroup ENGINE = InnoDB; alter table o_bs_membership ENGINE = InnoDB; alter table o_repositoryentry ENGINE = InnoDB; -alter table o_bookmark ENGINE = InnoDB; alter table o_references ENGINE = InnoDB; alter table o_gp_business ENGINE = InnoDB; -alter table o_gp_bgcontextresource_rel ENGINE = InnoDB; -alter table o_gp_bgcontext ENGINE = InnoDB; alter table o_gp_bgarea ENGINE = InnoDB; alter table o_gp_bgtoarea_rel ENGINE = InnoDB; alter table o_catentry ENGINE = InnoDB; @@ -1970,6 +1883,7 @@ alter table o_im_roster_entry ENGINE = InnoDB; alter table o_im_preferences ENGINE = InnoDB; alter table o_ex_task ENGINE = InnoDB; alter table o_ex_task_modifier ENGINE = InnoDB; +alter table o_checklist ENGINE = InnoDB; alter table o_cl_checkbox ENGINE = InnoDB; alter table o_cl_check ENGINE = InnoDB; @@ -2006,33 +1920,26 @@ create index idx_prop_category_idx on o_property (category); create index idx_prop_name_idx on o_property (name); create index idx_prop_restype_idx on o_property (resourcetypename); +-- group +alter table o_bs_group_member add constraint member_identity_ctx foreign key (fk_identity_id) references o_bs_identity (id); +alter table o_bs_group_member add constraint member_group_ctx foreign key (fk_group_id) references o_bs_group (id); +create index member_to_grp_role_idx on o_bs_group_member (g_role); + +alter table o_re_to_group add constraint re_to_group_group_ctx foreign key (fk_group_id) references o_bs_group (id); +alter table o_re_to_group add constraint re_to_group_re_ctx foreign key (fk_entry_id) references o_repositoryentry (repositoryentry_id); + +alter table o_gp_business add constraint gp_to_group_business_ctx foreign key (fk_group_id) references o_bs_group (id); + -- business group -alter table o_gp_business add constraint FKCEEB8A86DF6BCD14 foreign key (groupcontext_fk) references o_gp_bgcontext (groupcontext_id); -alter table o_gp_business add constraint FKCEEB8A86A1FAC766 foreign key (fk_ownergroup) references o_bs_secgroup (id); -alter table o_gp_business 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); create index gp_name_idx on o_gp_business (groupname); create index idx_grp_lifecycle_soft_idx on o_gp_business (external_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); - alter table o_bs_namedgroup add constraint FKBAFCBBC4B85B522C foreign key (secgroup_id) references o_bs_secgroup (id); create index groupname_idx on o_bs_namedgroup (groupname); --- context (deprecated) -alter table o_gp_bgcontext add constraint FK1C154FC47E4A0638 foreign key (ownergroup_fk) references o_bs_secgroup (id); -create index type_idx on o_gp_bgcontext (grouptype); -create index default_idx on o_gp_bgcontext (defaultcontext); -create index name_idx on o_gp_bgcontext (name); - -alter table o_gp_bgcontextresource_rel add constraint FK9903BEAC9F9C3F1D foreign key (oresource_id) references o_olatresource (resource_id); -alter table o_gp_bgcontextresource_rel add constraint FK9903BEACDF6BCD14 foreign key (groupcontext_fk) references o_gp_bgcontext (groupcontext_id); - -- area -alter table o_gp_bgarea add constraint FK9EFAF698DF6BCD14 foreign key (groupcontext_fk) references o_gp_bgcontext (groupcontext_id); alter table o_gp_bgarea add constraint idx_area_to_resource foreign key (fk_resource) references o_olatresource (resource_id); create index name_idx on o_gp_bgarea (name); @@ -2098,9 +2005,6 @@ create index id_idx on o_olatresource (resid); -- repository alter table o_repositoryentry add constraint FK2F9C439888C31018 foreign key (fk_olatresource) references o_olatresource (resource_id); -alter table o_repositoryentry add constraint FK2F9C4398A1FAC766 foreign key (fk_ownergroup) references o_bs_secgroup (id); -alter table o_repositoryentry add constraint repo_tutor_sec_group_ctx foreign key (fk_tutorgroup) references o_bs_secgroup (id); -alter table o_repositoryentry add constraint repo_parti_sec_group_ctx foreign key (fk_participantgroup) references o_bs_secgroup (id); create index access_idx on o_repositoryentry (accesscode); create index initialAuthor_idx on o_repositoryentry (initialauthor); @@ -2113,8 +2017,7 @@ create index idx_re_lifecycle_extref_idx on o_repositoryentry (external_ref); alter table o_repositoryentry add constraint idx_re_lifecycle_fk foreign key (fk_lifecycle) references o_repositoryentry_cycle(id); create index idx_re_lifecycle_soft_idx on o_repositoryentry_cycle (r_softkey); --- (deprecated) -alter table o_repositorymetadata add constraint FKDB97A6493F14E3EE foreign key (fk_repositoryentry) references o_repositoryentry (repositoryentry_id); +alter table o_repositoryentry add constraint repoentry_stats_ctx foreign key (fk_stats) references o_repositoryentry_stats (id); -- access control create index ac_offer_to_resource_idx on o_ac_offer (fk_resource_id); @@ -2141,9 +2044,6 @@ create index paypal_pay_s_trx_id_idx on o_ac_paypal_transaction (ipn_sender_tran alter table o_ac_reservation add constraint idx_rsrv_to_rsrc_rsrc foreign key (fk_resource) references o_olatresource (resource_id); alter table o_ac_reservation add constraint idx_rsrv_to_rsrc_identity foreign key (fk_identity) references o_bs_identity (id); --- bookmark (deprecated) -alter table o_bookmark add constraint FK68C4E30663219E27 foreign key (owner_id) references o_bs_identity (id); - -- note alter table o_note add constraint FKC2D855C263219E27 foreign key (owner_id) references o_bs_identity (id); create index resid_idx on o_note (resourcetypeid); @@ -2212,7 +2112,6 @@ alter table o_ep_artefact add constraint FKF26C8375236F28X foreign key (fk_artef alter table o_ep_artefact add constraint FKA0070D12316A97B4 foreign key (fk_struct_el_id) references o_ep_struct_el (structure_id); alter table o_ep_struct_el add constraint FKF26C8375236F26X foreign key (fk_olatresource) references o_olatresource (resource_id); -alter table o_ep_struct_el add constraint FKF26C8375236F29X foreign key (fk_ownergroup) references o_bs_secgroup (id); alter table o_ep_struct_el add constraint FK4ECC1C8D636191A1 foreign key (fk_map_source_id) references o_ep_struct_el (structure_id); alter table o_ep_struct_el add constraint FK4ECC1C8D76990817 foreign key (fk_struct_root_id) references o_ep_struct_el (structure_id); alter table o_ep_struct_el add constraint FK4ECC1C8D76990818 foreign key (fk_struct_root_map_id) references o_ep_struct_el (structure_id); diff --git a/src/main/resources/database/postgresql/setupDatabase.sql b/src/main/resources/database/postgresql/setupDatabase.sql index 5614c19aff99d3713ef63bf4dffaae19fa16c2aa..1a126c69b3977c99b80c850df4af5e6d176c4858 100644 --- a/src/main/resources/database/postgresql/setupDatabase.sql +++ b/src/main/resources/database/postgresql/setupDatabase.sql @@ -397,8 +397,9 @@ create table o_readmessage ( identity_id int8 not null, forum_id int8 not null, message_id int8 not null, - primary key (id)); - + primary key (id) +); + create table o_loggingtable ( log_id int8 not null, creationdate timestamp, @@ -589,8 +590,6 @@ create table o_ep_collect_restriction ( fk_struct_el_id int8, primary key (collect_id) ); - --- eportfolio structure element create table o_ep_struct_el ( structure_id int8 not null, structure_type varchar(32) not null, @@ -617,8 +616,6 @@ create table o_ep_struct_el ( fk_olatresource int8 not null, primary key (structure_id) ); - --- eportfolio structure to structure link create table o_ep_struct_struct_link ( link_id int8 not null, version int4 not null, @@ -628,8 +625,6 @@ create table o_ep_struct_struct_link ( fk_struct_child_id int8 not null, primary key (link_id) ); - --- eportfolio structure to artefact link create table o_ep_struct_artefact_link ( link_id int8 not null, version int4 not null, @@ -738,6 +733,7 @@ create table o_ac_offer ( fk_resource_id int8, primary key (offer_id) ); + create table o_ac_method ( method_id int8 NOT NULL, access_method varchar(32), @@ -750,6 +746,7 @@ create table o_ac_method ( validto timestamp, primary key (method_id) ); + create table o_ac_offer_access ( offer_method_id int8 NOT NULL, version int4 not null, @@ -761,6 +758,7 @@ create table o_ac_offer_access ( fk_method_id int8, primary key (offer_method_id) ); + -- access cart create table o_ac_order ( order_id int8 NOT NULL, @@ -778,6 +776,7 @@ create table o_ac_order ( fk_delivery_id int8, primary key (order_id) ); + create table o_ac_order_part ( order_part_id int8 NOT NULL, version int4 not null, @@ -790,6 +789,7 @@ create table o_ac_order_part ( fk_order_id int8, primary key (order_part_id) ); + create table o_ac_order_line ( order_item_id int8 NOT NULL, version int4 not null, @@ -802,7 +802,8 @@ create table o_ac_order_line ( fk_order_part_id int8, fk_offer_id int8, primary key (order_item_id) -); +); + create table o_ac_transaction ( transaction_id int8 NOT NULL, version int4 not null, @@ -1089,7 +1090,6 @@ create table o_im_preferences ( primary key (id) ); - -- add mapper table create table o_mapper ( id int8 not null, @@ -2041,10 +2041,10 @@ create index lc_action_idx on o_lifecycle (action); alter table o_mark add constraint FKF26C8375236F21X foreign key (creator_id) references o_bs_identity (id); create index FKF26C8375236F21X on o_mark (creator_id); -create index mark_id_idx on o_mark (resid); -create index mark_name_idx on o_mark (resname); -create index mark_subpath_idx on o_mark (ressubpath); -create index mark_businesspath_idx on o_mark (businesspath); +create index mark_id_idx on o_mark(resid); +create index mark_name_idx on o_mark(resname); +create index mark_subpath_idx on o_mark(ressubpath); +create index mark_businesspath_idx on o_mark(businesspath); -- forum alter table o_message add constraint FKF26C8375236F20E foreign key (creator_id) references o_bs_identity;