diff scripts/migration/migrate_datasets.sql @ 10:a50cf11e5178

Rewrite LGDataverse completely upgrading to dataverse4.0
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Tue, 08 Sep 2015 17:00:21 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/migration/migrate_datasets.sql	Tue Sep 08 17:00:21 2015 +0200
@@ -0,0 +1,69 @@
+--copy studyversion fields to datasetversion
+update datasetversion  
+ set createtime = sv.createtime,
+     lastupdatetime = sv.lastupdatetime,
+     archivetime= sv.archivetime,
+     archivenote = sv.archivenote,
+     deaccessionlink = sv.deaccessionlink,
+     versionnote = sv.versionnote
+from  _dvn3_studyversion  sv, dataset  d,  _dvn3_study s
+where d.authority = s.authority
+and d.protocol = s.protocol
+and d.identifier = s.studyid
+and datasetversion.dataset_id = d.id
+and datasetversion.versionnumber = sv.versionnumber
+and sv.study_id = s.id;
+
+-- set dataset.publication date to the releasetime of the earliest released studyversion
+update dvobject 
+set publicationdate = m.releasetime
+from (select dvobject.id, sv.study_id, min(sv.releasetime) as releasetime
+from _dvn3_studyversion  sv, dataset  d,  _dvn3_study s, dvobject
+where d.authority = s.authority
+and d.protocol = s.protocol
+and d.identifier = s.studyid
+and dvobject.id = d.id
+and sv.study_id = s.id
+and sv.versionstate!='DRAFT' group by sv.study_id, dvobject.id) m where m.id = dvobject.id;
+
+-- set dvobject creator_id for each dataset to study.creator_id
+update dvobject
+set creator_id = s.creator_id, createdate = s.createtime
+from _dvn3_study s, dataset d
+where d.authority = s.authority
+and d.protocol = s.protocol
+and d.identifier = s.studyid
+and dvobject.id = d.id;
+
+-- migrate data from _dvn3_versioncontributor to datasetversionuser 
+insert into datasetversionuser ( lastupdatedate, authenticateduser_id, datasetversion_id )  (
+select  vc.lastupdatetime, vc.contributor_id,  dv.id
+from _dvn3_versioncontributor vc,
+_dvn3_studyversion sv,
+_dvn3_study s,
+dataset d,
+datasetversion dv,
+authenticateduser au
+where vc.studyversion_id = sv.id
+and sv.study_id = s.id
+and d.authority = s.authority
+and d.protocol = s.protocol
+and d.identifier = s.studyid
+and dv.dataset_id = d.id
+and dv.versionnumber = sv.versionnumber
+and au.id = vc.contributor_id);
+
+-- modify versionstate for older versions of deaccessioned studies
+update datasetversion
+set versionstate = 'DEACCESSIONED'
+where id in (
+select dv1.id from datasetversion dv1, datasetversion dv2
+where dv1.dataset_id = dv2.dataset_id 
+and dv1.versionnumber < dv2.versionnumber
+and dv2.versionstate  = 'DEACCESSIONED');
+
+-- update the globalidcreatetime to be equal to the publicationdate
+update dataset set globalidcreatetime = publicationdate
+from dvobject dvo
+where dataset.id = dvo.id;
+