diff --git a/SQL/0000-00-00-schema.sql b/SQL/0000-00-00-schema.sql index 08de87e189..0b14a758a1 100644 --- a/SQL/0000-00-00-schema.sql +++ b/SQL/0000-00-00-schema.sql @@ -585,6 +585,30 @@ INSERT INTO `mri_scan_type` VALUES (999,'unknown'), (1000,'NA'); +CREATE TABLE `bids_dataset` ( + `ID` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `Path` VARCHAR(255) NOT NULL, + `InsertTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + `UpdateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`ID`), + UNIQUE KEY `bids_dataset_path_unique` (`Path`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE `bids_file` ( + `ID` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `DatasetID` INT(10) UNSIGNED NOT NULL, + `Path` VARCHAR(255) NOT NULL, + `SourcePath` VARCHAR(255) NULL, + `InsertTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + `Blake2bHash` CHAR(128) NOT NULL, + `Derivative` TINYINT(1) NOT NULL, + PRIMARY KEY (`ID`), + UNIQUE KEY `bids_file_dataset_id_path_unique` (`DatasetID`, `Path`), + KEY `bids_file_dataset_id_fk_idx` (`DatasetID`), + CONSTRAINT `bids_file_dataset_id_fk` + FOREIGN KEY (`DatasetID`) REFERENCES `bids_dataset` (`ID`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + CREATE TABLE `files` ( `FileID` int(10) unsigned NOT NULL auto_increment, `SessionID` int(10) unsigned NOT NULL, @@ -609,6 +633,7 @@ CREATE TABLE `files` ( `ScannerID` int(10) unsigned default NULL, `AcqOrderPerModality` int(11) default NULL, `AcquisitionDate` date default NULL, + `BidsInfoID` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`FileID`), KEY `file` (`File`), KEY `sessionid` (`SessionID`), @@ -618,6 +643,7 @@ CREATE TABLE `files` ( KEY `scannerid` (`ScannerID`), KEY `tarchivesource` (`TarchiveSource`), KEY `FK_files_HrrtArchiveID_1` (`HrrtArchiveID`), + KEY `files_bids_info_id_fk_idx` (`BidsInfoID`), CONSTRAINT `FK_files_2` FOREIGN KEY (`MriScanTypeID`) REFERENCES `mri_scan_type` (`MriScanTypeID`), CONSTRAINT `FK_files_1` FOREIGN KEY (`SessionID`) REFERENCES `session` (`ID`), CONSTRAINT `FK_files_3` FOREIGN KEY (`SourceFileID`) REFERENCES `files` (`FileID`), @@ -625,7 +651,9 @@ CREATE TABLE `files` ( CONSTRAINT `FK_files_FileTypes` FOREIGN KEY (`FileType`) REFERENCES `ImagingFileTypes`(`type`), CONSTRAINT `FK_files_scannerID` FOREIGN KEY (`ScannerID`) REFERENCES `mri_scanner` (`ID`), CONSTRAINT `FK_files_TarchiveID` FOREIGN KEY (`TarchiveSource`) REFERENCES `tarchive` (`TarchiveID`), - CONSTRAINT `FK_files_HrrtArchiveID` FOREIGN KEY (`HrrtArchiveID`) REFERENCES `hrrt_archive` (`HrrtArchiveID`) + CONSTRAINT `FK_files_HrrtArchiveID` FOREIGN KEY (`HrrtArchiveID`) REFERENCES `hrrt_archive` (`HrrtArchiveID`), + CONSTRAINT `files_bids_info_id_fk` + FOREIGN KEY (`BidsInfoID`) REFERENCES `bids_file` (`ID`) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `files_intermediary` ( diff --git a/SQL/0000-00-05-ElectrophysiologyTables.sql b/SQL/0000-00-05-ElectrophysiologyTables.sql index c9c022465a..a15c366a20 100644 --- a/SQL/0000-00-05-ElectrophysiologyTables.sql +++ b/SQL/0000-00-05-ElectrophysiologyTables.sql @@ -7,7 +7,14 @@ CREATE TABLE `meg_ctf_head_shape_file` ( `ID` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `Path` VARCHAR(255) NOT NULL, `Blake2bHash` VARCHAR(128) NOT NULL, - PRIMARY KEY (`ID`) + `BidsInfoID` INT(10) UNSIGNED DEFAULT NULL, + `InsertTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`ID`), + KEY `meg_ctf_head_shape_file_bids_info_id_fk_idx` (`BidsInfoID`), + CONSTRAINT `meg_ctf_head_shape_file_bids_info_id_fk` + FOREIGN KEY (`BidsInfoID`) + REFERENCES `bids_file` (`ID`) + ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- Create a meg_ctf_head_shape_point table @@ -57,7 +64,9 @@ CREATE TABLE `physiological_file` ( `Index` INT(5) DEFAULT NULL, `ParentID` INT(10) unsigned DEFAULT NULL, `HeadShapeFileID` INT(10) unsigned DEFAULT NULL, + `BidsInfoID` INT(10) unsigned DEFAULT NULL, PRIMARY KEY (`PhysiologicalFileID`), + KEY `physiological_file_bids_info_id_fk_idx` (`BidsInfoID`), CONSTRAINT `FK_session_ID` FOREIGN KEY (`SessionID`) REFERENCES `session` (`ID`), @@ -73,9 +82,14 @@ CREATE TABLE `physiological_file` ( CONSTRAINT `FK_ParentID` FOREIGN KEY (`ParentID`) REFERENCES `physiological_file` (`PhysiologicalFileID`), - CONSTRAINT `FK_head_shape_HeadShapeFileID` + CONSTRAINT `physiological_file_head_shape_file_id_fk` FOREIGN KEY (`HeadShapeFileID`) REFERENCES `meg_ctf_head_shape_file` (`ID`) + ON DELETE SET NULL, + CONSTRAINT `physiological_file_bids_info_id_fk` + FOREIGN KEY (`BidsInfoID`) + REFERENCES `bids_file` (`ID`) + ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; @@ -307,12 +321,16 @@ CREATE TABLE `physiological_event_file` ( `FilePath` varchar(255) DEFAULT NULL, `LastUpdate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `LastWritten` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `BidsInfoID` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`EventFileID`), KEY `FK_physio_file_ID` (`PhysiologicalFileID`), KEY `FK_event_file_type` (`FileType`), + KEY `physiological_event_file_bids_info_id_fk_idx` (`BidsInfoID`), CONSTRAINT `FK_event_file_type` FOREIGN KEY (`FileType`) REFERENCES `ImagingFileTypes` (`type`), CONSTRAINT `FK_physio_file_ID` FOREIGN KEY (`PhysiologicalFileID`) REFERENCES `physiological_file` (`PhysiologicalFileID`), - CONSTRAINT `FK_pef_project_ID` FOREIGN KEY (`ProjectID`) REFERENCES `Project` (`ProjectID`) + CONSTRAINT `FK_pef_project_ID` FOREIGN KEY (`ProjectID`) REFERENCES `Project` (`ProjectID`), + CONSTRAINT `physiological_event_file_bids_info_id_fk` + FOREIGN KEY (`BidsInfoID`) REFERENCES `bids_file` (`ID`) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; diff --git a/SQL/New_patches/2026-08-12-bids-dataset-tables.sql b/SQL/New_patches/2026-08-12-bids-dataset-tables.sql new file mode 100644 index 0000000000..e5a75dd5f9 --- /dev/null +++ b/SQL/New_patches/2026-08-12-bids-dataset-tables.sql @@ -0,0 +1,85 @@ +CREATE TABLE `bids_dataset` ( + `ID` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `Path` VARCHAR(255) NOT NULL, + `InsertTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + `UpdateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`ID`), + UNIQUE KEY `bids_dataset_path_unique` (`Path`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE `bids_file` ( + `ID` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `DatasetID` INT(10) UNSIGNED NOT NULL, + `Path` VARCHAR(255) NOT NULL, + `SourcePath` VARCHAR(255) NULL, + `InsertTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + `Blake2bHash` CHAR(128) NOT NULL, + `Derivative` TINYINT(1) NOT NULL, + PRIMARY KEY (`ID`), + UNIQUE KEY `bids_file_dataset_id_path_unique` (`DatasetID`, `Path`), + KEY `bids_file_dataset_id_fk_idx` (`DatasetID`), + CONSTRAINT `bids_file_dataset_id_fk` + FOREIGN KEY (`DatasetID`) REFERENCES `bids_dataset` (`ID`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +ALTER TABLE `files` + ADD COLUMN `BidsInfoID` INT(10) UNSIGNED NULL, + ADD KEY `files_bids_info_id_fk_idx` (`BidsInfoID`), + ADD CONSTRAINT `files_bids_info_id_fk` + FOREIGN KEY (`BidsInfoID`) REFERENCES `bids_file` (`ID`) ON DELETE SET NULL; + +ALTER TABLE `physiological_file` + ADD COLUMN `BidsInfoID` INT(10) UNSIGNED NULL, + ADD KEY `physiological_file_bids_info_id_fk_idx` (`BidsInfoID`), + ADD CONSTRAINT `physiological_file_bids_info_id_fk` + FOREIGN KEY (`BidsInfoID`) REFERENCES `bids_file` (`ID`) ON DELETE SET NULL; + +ALTER TABLE `physiological_event_file` + ADD COLUMN `BidsInfoID` INT(10) UNSIGNED NULL, + ADD KEY `physiological_event_file_bids_info_id_fk_idx` (`BidsInfoID`), + ADD CONSTRAINT `physiological_event_file_bids_info_id_fk` + FOREIGN KEY (`BidsInfoID`) REFERENCES `bids_file` (`ID`) ON DELETE SET NULL; + +ALTER TABLE `meg_ctf_head_shape_file` + ADD COLUMN `BidsInfoID` INT(10) UNSIGNED NULL, + ADD COLUMN `InsertTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + ADD KEY `meg_ctf_head_shape_file_bids_info_id_fk_idx` (`BidsInfoID`), + ADD CONSTRAINT `meg_ctf_head_shape_file_bids_info_id_fk` + FOREIGN KEY (`BidsInfoID`) REFERENCES `bids_file` (`ID`) ON DELETE SET NULL; + +ALTER TABLE `physiological_file` + DROP FOREIGN KEY `physiological_file_head_shape_file_id_fk`, + ADD CONSTRAINT `physiological_file_head_shape_file_id_fk` + FOREIGN KEY (`HeadShapeFileID`) REFERENCES `meg_ctf_head_shape_file` (`ID`) ON DELETE SET NULL; + +/* Revert patch + +ALTER TABLE `physiological_file` + DROP FOREIGN KEY `physiological_file_head_shape_file_id_fk`, + ADD CONSTRAINT `physiological_file_head_shape_file_id_fk` + FOREIGN KEY (`HeadShapeFileID`) REFERENCES `meg_ctf_head_shape_file` (`ID`); + +ALTER TABLE `meg_ctf_head_shape_file` + DROP FOREIGN KEY `meg_ctf_head_shape_file_bids_info_id_fk`, + DROP KEY `meg_ctf_head_shape_file_bids_info_id_fk_idx`, + DROP COLUMN `InsertTime`, + DROP COLUMN `BidsInfoID`; + +ALTER TABLE `physiological_event_file` + DROP FOREIGN KEY `physiological_event_file_bids_info_id_fk`, + DROP KEY `physiological_event_file_bids_info_id_fk_idx`, + DROP COLUMN `BidsInfoID`; + +ALTER TABLE `physiological_file` + DROP FOREIGN KEY `physiological_file_bids_info_id_fk`, + DROP KEY `physiological_file_bids_info_id_fk_idx`, + DROP COLUMN `BidsInfoID`; + +ALTER TABLE `files` + DROP FOREIGN KEY `files_bids_info_id_fk`, + DROP KEY `files_bids_info_id_fk_idx`, + DROP COLUMN `BidsInfoID`; + +DROP TABLE `bids_file`; + +DROP TABLE `bids_dataset`; */