From 47ea3b335d7494cc11e5a6979d5d16e4d1c366d5 Mon Sep 17 00:00:00 2001 From: MaximeBICMTL Date: Wed, 12 Aug 2026 00:00:06 +0000 Subject: [PATCH 1/2] add-bids-tables-patch --- SQL/0000-00-00-schema.sql | 29 ++++++- SQL/0000-00-05-ElectrophysiologyTables.sql | 24 +++++- .../2026-08-12-bids-dataset-tables.sql | 84 +++++++++++++++++++ 3 files changed, 133 insertions(+), 4 deletions(-) create mode 100644 SQL/New_patches/2026-08-12-bids-dataset-tables.sql diff --git a/SQL/0000-00-00-schema.sql b/SQL/0000-00-00-schema.sql index 08de87e189..107128c8ba 100644 --- a/SQL/0000-00-00-schema.sql +++ b/SQL/0000-00-00-schema.sql @@ -585,6 +585,29 @@ 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, + 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, + `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 +632,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 +642,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 +650,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..fce4f1d1f4 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, + 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..119c159262 --- /dev/null +++ b/SQL/New_patches/2026-08-12-bids-dataset-tables.sql @@ -0,0 +1,84 @@ +CREATE TABLE `bids_dataset` ( + `ID` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `Path` VARCHAR(255) NOT NULL, + `InsertTime` DATETIME NOT NULL, + 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, + `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, + 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`; */ From e255e6b2d6b6f00e17a5a1ef7845e780e864c9b0 Mon Sep 17 00:00:00 2001 From: MaximeBICMTL Date: Thu, 13 Aug 2026 15:17:45 +0000 Subject: [PATCH 2/2] add update time and time default --- SQL/0000-00-00-schema.sql | 5 +++-- SQL/0000-00-05-ElectrophysiologyTables.sql | 2 +- SQL/New_patches/2026-08-12-bids-dataset-tables.sql | 7 ++++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/SQL/0000-00-00-schema.sql b/SQL/0000-00-00-schema.sql index 107128c8ba..0b14a758a1 100644 --- a/SQL/0000-00-00-schema.sql +++ b/SQL/0000-00-00-schema.sql @@ -588,7 +588,8 @@ INSERT INTO `mri_scan_type` VALUES CREATE TABLE `bids_dataset` ( `ID` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `Path` VARCHAR(255) NOT NULL, - `InsertTime` DATETIME 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; @@ -598,7 +599,7 @@ CREATE TABLE `bids_file` ( `DatasetID` INT(10) UNSIGNED NOT NULL, `Path` VARCHAR(255) NOT NULL, `SourcePath` VARCHAR(255) NULL, - `InsertTime` DATETIME NOT NULL, + `InsertTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `Blake2bHash` CHAR(128) NOT NULL, `Derivative` TINYINT(1) NOT NULL, PRIMARY KEY (`ID`), diff --git a/SQL/0000-00-05-ElectrophysiologyTables.sql b/SQL/0000-00-05-ElectrophysiologyTables.sql index fce4f1d1f4..a15c366a20 100644 --- a/SQL/0000-00-05-ElectrophysiologyTables.sql +++ b/SQL/0000-00-05-ElectrophysiologyTables.sql @@ -8,7 +8,7 @@ CREATE TABLE `meg_ctf_head_shape_file` ( `Path` VARCHAR(255) NOT NULL, `Blake2bHash` VARCHAR(128) NOT NULL, `BidsInfoID` INT(10) UNSIGNED DEFAULT NULL, - `InsertTime` DATETIME NOT 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` diff --git a/SQL/New_patches/2026-08-12-bids-dataset-tables.sql b/SQL/New_patches/2026-08-12-bids-dataset-tables.sql index 119c159262..e5a75dd5f9 100644 --- a/SQL/New_patches/2026-08-12-bids-dataset-tables.sql +++ b/SQL/New_patches/2026-08-12-bids-dataset-tables.sql @@ -1,7 +1,8 @@ CREATE TABLE `bids_dataset` ( `ID` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `Path` VARCHAR(255) NOT NULL, - `InsertTime` DATETIME 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; @@ -11,7 +12,7 @@ CREATE TABLE `bids_file` ( `DatasetID` INT(10) UNSIGNED NOT NULL, `Path` VARCHAR(255) NOT NULL, `SourcePath` VARCHAR(255) NULL, - `InsertTime` DATETIME NOT NULL, + `InsertTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `Blake2bHash` CHAR(128) NOT NULL, `Derivative` TINYINT(1) NOT NULL, PRIMARY KEY (`ID`), @@ -41,7 +42,7 @@ ALTER TABLE `physiological_event_file` ALTER TABLE `meg_ctf_head_shape_file` ADD COLUMN `BidsInfoID` INT(10) UNSIGNED NULL, - ADD COLUMN `InsertTime` DATETIME NOT 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;