@@ -43,24 +43,29 @@ module.exports = {
4343 event . state = data . datasets ;
4444 } ,
4545 // Update datasets' dataset_id when connecting/disconnecting to/from study
46+
47+ // If created through admin event.state will be an object with connect, disconnect
48+ // If created through import plugin datasets will be an array of ids
4649 async afterCreate ( event ) {
47- const datasets = event . state ;
50+ let datasets = event . state ;
51+ if ( ! Array . isArray ( datasets ) ) {
52+ datasets = datasets . connect ?. map ( ( d ) => d . id ) || [ ] ;
53+ }
4854 for ( const idx in datasets ) {
4955 await strapi . entityService . update ( 'api::dataset.dataset' , datasets [ idx ] , {
50- data : { study : event . result . id }
56+ data : { } // study id will already be added to the dataset
5157 } ) ;
5258 }
5359 } ,
5460 async afterUpdate ( event ) {
55- const { disconnect, connect } = event . state ;
56- for ( const idx in disconnect ) {
57- await strapi . entityService . update ( 'api::dataset.dataset' , disconnect [ idx ] . id , {
58- data : { study : null }
59- } ) ;
61+ let datasets = event . state ;
62+ if ( ! Array . isArray ( datasets ) ) {
63+ const { connect = [ ] , disconnect = [ ] } = datasets ;
64+ datasets = [ ...connect . map ( ( d ) => d . id ) , ...disconnect . map ( ( d ) => d . id ) ] ;
6065 }
61- for ( const idx in connect ) {
62- await strapi . entityService . update ( 'api::dataset.dataset' , connect [ idx ] . id , {
63- data : { study : event . result . id }
66+ for ( const idx in datasets ) {
67+ await strapi . entityService . update ( 'api::dataset.dataset' , datasets [ idx ] , {
68+ data : { } // study id will already be added to the dataset
6469 } ) ;
6570 }
6671 }
0 commit comments