Skip to content

Commit

Permalink
Refresh schema files to v4.2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
KarlLevik committed Aug 14, 2024
1 parent b0c1ff9 commit be876f7
Show file tree
Hide file tree
Showing 3 changed files with 264 additions and 235 deletions.
17 changes: 13 additions & 4 deletions schemas/ispyb/lookups.sql
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

/*!40000 ALTER TABLE `AdminVar` DISABLE KEYS */;
INSERT INTO `AdminVar` (`varId`, `name`, `value`) VALUES (4,'schemaVersion','4.1.0');
INSERT INTO `AdminVar` (`varId`, `name`, `value`) VALUES (4,'schemaVersion','4.2.0');
/*!40000 ALTER TABLE `AdminVar` ENABLE KEYS */;

/*!40000 ALTER TABLE `SchemaStatus` DISABLE KEYS */;
Expand Down Expand Up @@ -256,7 +256,13 @@ INSERT INTO `SchemaStatus` (`schemaStatusId`, `scriptName`, `schemaStatus`, `rec
(285,'2024_03_20_Shipping_Dewar_externalIds.sql','DONE','2024-03-26 16:40:34'),
(286,'2024_03_26_AdminVar_bump_version.sql','DONE','2024-03-26 16:40:34'),
(287,'2024_03_26_AutoProc_index_refined_unit_cell.sql','DONE','2024-03-26 16:40:34'),
(288,'2023_11_16_AdminVar_bump_version.sql','DONE','2024-03-26 16:47:25');
(288,'2023_11_16_AdminVar_bump_version.sql','DONE','2024-03-26 16:47:25'),
(289,'2024_05_14_DataCollectionGroup_experimentType.sql','DONE','2024-08-14 11:23:41'),
(290,'2024_05_30_DiffractionPlan_experimentKind.sql','DONE','2024-08-14 11:23:41'),
(291,'2024_07_08_BLSampleGroup_ownerId.sql','DONE','2024-08-14 11:23:41'),
(292,'2024_07_16_ContainerType_insert_new.sql','DONE','2024-08-14 11:23:41'),
(293,'2024_08_08_ProcessedTomogram.sql','DONE','2024-08-14 11:23:41'),
(294,'2024_08_14_AdminVar_bump_version.sql','DONE','2024-08-14 11:23:41');
/*!40000 ALTER TABLE `SchemaStatus` ENABLE KEYS */;

/*!40000 ALTER TABLE `ComponentType` DISABLE KEYS */;
Expand Down Expand Up @@ -325,7 +331,9 @@ INSERT INTO `ContainerType` (`containerTypeId`, `name`, `proposalType`, `active`
(32,'Box','xpdf',1,25,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(33,'Puck-22','xpdf',1,22,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(34,'I22_Grid_81','saxs',1,81,9,1,1,1,1,0,0,-1),
(35,'I22_Capillary_Rack_25','saxs',1,25,25,1,1,1,1,0,0,-1);
(35,'I22_Capillary_Rack_25','saxs',1,25,25,1,1,1,1,0,0,-1),
(36,'VMXm-Cartridge','mx',1,5,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(37,'VMXm-GridBox','mx',1,4,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
/*!40000 ALTER TABLE `ContainerType` ENABLE KEYS */;

/*!40000 ALTER TABLE `ExperimentType` DISABLE KEYS */;
Expand Down Expand Up @@ -370,7 +378,8 @@ INSERT INTO `ExperimentType` (`experimentTypeId`, `name`, `proposalType`, `activ
(39,'Serial Jet','mx',1),
(40,'Still','mx',1),
(41,'SSX-Chip','mx',1),
(42,'SSX-Jet','mx',1);
(42,'SSX-Jet','mx',1),
(43,'Metal ID','mx',1);
/*!40000 ALTER TABLE `ExperimentType` ENABLE KEYS */;

/*!40000 ALTER TABLE `InspectionType` DISABLE KEYS */;
Expand Down
72 changes: 38 additions & 34 deletions schemas/ispyb/routines.sql
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb3 */ ;
/*!50003 SET collation_connection = utf8mb3_general_ci */ ;
DELIMITER ;;
CREATE FUNCTION `retrieve_proposal_title`(p_proposal_code varchar(5), p_proposal_number int) RETURNS varchar(255) CHARSET latin1 COLLATE latin1_swedish_ci
CREATE FUNCTION `retrieve_proposal_title`(p_proposal_code varchar(5), p_proposal_number int) RETURNS varchar(255) CHARSET latin1
READS SQL DATA
BEGIN
DECLARE ret_title varchar(255);
Expand All @@ -155,7 +155,7 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb3 */ ;
/*!50003 SET collation_connection = utf8mb3_general_ci */ ;
DELIMITER ;;
CREATE FUNCTION `retrieve_proposal_title_v2`(p_proposalCode varchar(5), p_proposalNumber int) RETURNS varchar(255) CHARSET latin1 COLLATE latin1_swedish_ci
CREATE FUNCTION `retrieve_proposal_title_v2`(p_proposalCode varchar(5), p_proposalNumber int) RETURNS varchar(255) CHARSET latin1
READS SQL DATA
COMMENT 'Retrieve the title for a given proposal code and number.'
BEGIN
Expand Down Expand Up @@ -206,7 +206,7 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb3 */ ;
/*!50003 SET collation_connection = utf8mb3_general_ci */ ;
DELIMITER ;;
CREATE FUNCTION `root_replace`(p_str varchar(255), p_oldroot varchar(255), p_newroot varchar(255)) RETURNS varchar(255) CHARSET latin1 COLLATE latin1_swedish_ci
CREATE FUNCTION `root_replace`(p_str varchar(255), p_oldroot varchar(255), p_newroot varchar(255)) RETURNS varchar(255) CHARSET latin1
COMMENT 'Returns a varchar where the old root p_oldroot (the leftmost part) of p_str has been replaced with a new root p_newroot'
BEGIN
DECLARE path_len smallint unsigned DEFAULT LENGTH(p_oldroot);
Expand Down Expand Up @@ -9448,7 +9448,7 @@ CREATE PROCEDURE `upsert_dc_group_v3`(
p_sessionNumber int(10),
p_sampleId int(10) unsigned,
p_sampleBarcode varchar(45),
p_experimenttype varchar(45),
p_experimenttype varchar(45),
p_starttime datetime,
p_endtime datetime,
p_crystalClass varchar(20),
Expand All @@ -9459,53 +9459,57 @@ CREATE PROCEDURE `upsert_dc_group_v3`(
p_actualContainerSlotInSC integer(10),
p_comments varchar(1024),
p_xtalSnapshotFullPath varchar(255),
p_scanParameters longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
p_scanParameters longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
)
MODIFIES SQL DATA
COMMENT 'Inserts or updates info about data collection group (p_id).\nMandatory columns:\nFor insert: Either p_sessionId or a valid session described by (p_proposalCode, p_proposalNumber, p_sessionNumber)\nFor update: p_id\nNote: In order to associate the data collection group with a sample, one of the following sets of parameters are required:\n* p_sampleId\n* p_proposalCode, p_proposalNumber, p_sessionNumber + p_sampleBarcode\n* p_actualContainerBarcode + p_actualSampleSlotInContainer\nReturns: Record ID in p_id.'
BEGIN
DECLARE row_proposal_id int(10) unsigned DEFAULT NULL;
DECLARE row_sample_id int(10) unsigned DEFAULT NULL;
DECLARE row_proposal_id int(10) unsigned DEFAULT NULL;
DECLARE row_sample_id int(10) unsigned DEFAULT NULL;
DECLARE row_experiment_id int(10) unsigned DEFAULT NULL;

IF p_sessionId IS NULL AND p_proposalCode IS NOT NULL AND p_proposalNumber IS NOT NULL AND p_sessionNumber IS NOT NULL THEN
IF p_sessionId IS NULL AND p_proposalCode IS NOT NULL AND p_proposalNumber IS NOT NULL AND p_sessionNumber IS NOT NULL THEN
SELECT max(bs.sessionid), p.proposalId INTO p_sessionId, row_proposal_id
FROM Proposal p INNER JOIN BLSession bs ON p.proposalid = bs.proposalid
WHERE p.proposalCode = p_proposalCode AND p.proposalNumber = p_proposalNumber AND bs.visit_number = p_sessionNumber;
END IF;

IF p_id IS NOT NULL OR p_sessionId IS NOT NULL THEN

IF p_sessionId IS NOT NULL AND p_sampleId IS NULL AND p_sampleBarcode IS NOT NULL THEN
IF row_proposal_id IS NULL THEN
SELECT proposalId INTO row_proposal_id
FROM BLSession
WHERE sessionId = p_sessionId;
IF row_proposal_id IS NULL THEN
SELECT proposalId INTO row_proposal_id
FROM BLSession
WHERE sessionId = p_sessionId;
END IF;
SELECT max(bls.blSampleId) INTO p_sampleId
FROM BLSample bls
INNER JOIN Container c on c.containerId = bls.containerId
INNER JOIN Dewar d on d.dewarId = c.dewarId
INNER JOIN Shipping s on s.shippingId = d.shippingId
WHERE bls.code = p_sampleBarcode AND s.proposalId = row_proposal_id;
END IF;
SELECT max(bls.blSampleId) INTO p_sampleId
FROM BLSample bls
INNER JOIN Container c on c.containerId = bls.containerId
INNER JOIN Dewar d on d.dewarId = c.dewarId
INNER JOIN Shipping s on s.shippingId = d.shippingId
WHERE bls.code = p_sampleBarcode AND s.proposalId = row_proposal_id;
END IF;

IF p_sampleId IS NULL AND (p_actualContainerBarcode IS NOT NULL) AND (p_actualSampleSlotInContainer IS NOT NULL) THEN
SELECT max(bls.blSampleId) INTO p_sampleId
FROM BLSample bls
INNER JOIN Container c on c.containerId = bls.containerId
WHERE c.barcode = p_actualContainerBarcode AND bls.location = p_actualSampleSlotInContainer;
END IF;
IF p_sampleId IS NULL AND (p_actualContainerBarcode IS NOT NULL) AND (p_actualSampleSlotInContainer IS NOT NULL) THEN
SELECT max(bls.blSampleId) INTO p_sampleId
FROM BLSample bls
INNER JOIN Container c on c.containerId = bls.containerId
WHERE c.barcode = p_actualContainerBarcode AND bls.location = p_actualSampleSlotInContainer;
END IF;

INSERT INTO DataCollectionGroup (datacollectionGroupId, sessionId, blsampleId, experimenttype, starttime, endtime,
SELECT experimentTypeId INTO row_experiment_id FROM ExperimentType WHERE name = p_experimenttype;

INSERT INTO DataCollectionGroup (datacollectionGroupId, sessionId, blsampleId, experimenttype, experimentTypeId, starttime, endtime,
crystalClass, detectorMode, actualSampleBarcode, actualSampleSlotInContainer, actualContainerBarcode, actualContainerSlotInSC,
comments, xtalSnapshotFullPath, scanParameters)
VALUES (p_id, p_sessionId, p_sampleId, p_experimenttype, p_starttime, p_endtime, p_crystalClass, p_detectorMode,
VALUES (p_id, p_sessionId, p_sampleId, p_experimenttype, row_experiment_id, p_starttime, p_endtime, p_crystalClass, p_detectorMode,
p_actualSampleBarcode, p_actualSampleSlotInContainer, p_actualContainerBarcode, p_actualContainerSlotInSC,
p_comments, p_xtalSnapshotFullPath, p_scanParameters)
ON DUPLICATE KEY UPDATE
sessionId = IFNULL(p_sessionId, sessionId),
blsampleId = IFNULL(p_sampleId, blsampleId),
experimenttype = IFNULL(p_experimenttype, experimenttype),
experimentTypeId = row_experiment_id,
starttime = IFNULL(p_starttime, starttime),
endtime = IFNULL(p_endtime, endtime),
crystalClass = IFNULL(p_crystalClass, crystalClass),
Expand All @@ -9518,13 +9522,13 @@ BEGIN
xtalSnapshotFullPath = IFNULL(p_xtalSnapshotFullPath, xtalSnapshotFullPath),
scanParameters = IFNULL (p_scanParameters, scanParameters);

IF p_id IS NULL THEN
SET p_id = LAST_INSERT_ID();
IF p_id IS NULL THEN
SET p_id = LAST_INSERT_ID();
END IF;
ELSE
SIGNAL SQLSTATE '45000' SET MYSQL_ERRNO=1644, MESSAGE_TEXT='Mandatory argument(s) are NULL: p_id OR p_sessionId OR a valid session described by (p_proposalCode and p_proposalNumber and p_sessionNumber) must be non-NULL.';
END IF;
END ;;
ELSE
SIGNAL SQLSTATE '45000' SET MYSQL_ERRNO=1644, MESSAGE_TEXT='Mandatory argument(s) are NULL: p_id OR p_sessionId OR a valid session described by (p_proposalCode and p_proposalNumber and p_sessionNumber) must be non-NULL.';
END IF;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
/*!50003 SET character_set_client = @saved_cs_client */ ;
Expand Down
Loading

0 comments on commit be876f7

Please sign in to comment.