Skip to content

Commit cf6f5a8

Browse files
committed
Modify sproc upsert_dc_group_v3 to populate DCG.experimentTypeId based on p_experimenttype
1 parent 612499c commit cf6f5a8

File tree

1 file changed

+34
-34
lines changed

1 file changed

+34
-34
lines changed
Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
11
/* Some tests:
22
SET @id = NULL;
3-
CALL upsert_dc_group_v2(@id, NULL, 'nt', 17192, 1, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
4-
SELECT * FROM DataCollectionGroup WHERE dataCollectionGroupId = @id;
5-
CALL upsert_dc_group_v2(@id, NULL, 'nt', 17192, 1, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'my funny comment','/dls/i03/data/2017/nt17192-1/jpegs/test.png');
3+
CALL upsert_dc_group_v3(@id, NULL, 'cm', 14451, 1, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'funny comment','/dls/i03/data/2024/cm14451-1/jpegs/test.png', NULL);
64
SELECT * FROM DataCollectionGroup WHERE dataCollectionGroupId = @id;
75
8-
SET @id = NULL;
9-
CALL upsert_dc_group_v2(@id, 403, NULL, NULL, NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'my very funny comment','/dls/i03/data/2007/nt20-1/jpegs/test.png');
106
*/
117

128
DELIMITER ;;
@@ -29,7 +25,7 @@ CREATE OR REPLACE DEFINER=`ispyb_root`@`%` PROCEDURE `upsert_dc_group_v3`(
2925
p_actualContainerSlotInSC integer(10),
3026
p_comments varchar(1024),
3127
p_xtalSnapshotFullPath varchar(255),
32-
p_scanParameters longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
28+
p_scanParameters longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
3329
)
3430
MODIFIES SQL DATA
3531
COMMENT 'Inserts or updates info about data collection group (p_id).
@@ -42,10 +38,11 @@ Note: In order to associate the data collection group with a sample, one of the
4238
* p_actualContainerBarcode + p_actualSampleSlotInContainer
4339
Returns: Record ID in p_id.'
4440
BEGIN
45-
DECLARE row_proposal_id int(10) unsigned DEFAULT NULL;
46-
DECLARE row_sample_id int(10) unsigned DEFAULT NULL;
41+
DECLARE row_proposal_id int(10) unsigned DEFAULT NULL;
42+
DECLARE row_sample_id int(10) unsigned DEFAULT NULL;
43+
DECLARE row_experiment_id int(10) unsigned DEFAULT NULL;
4744

48-
IF p_sessionId IS NULL AND p_proposalCode IS NOT NULL AND p_proposalNumber IS NOT NULL AND p_sessionNumber IS NOT NULL THEN
45+
IF p_sessionId IS NULL AND p_proposalCode IS NOT NULL AND p_proposalNumber IS NOT NULL AND p_sessionNumber IS NOT NULL THEN
4946
SELECT max(bs.sessionid), p.proposalId INTO p_sessionId, row_proposal_id
5047
FROM Proposal p INNER JOIN BLSession bs ON p.proposalid = bs.proposalid
5148
WHERE p.proposalCode = p_proposalCode AND p.proposalNumber = p_proposalNumber AND bs.visit_number = p_sessionNumber;
@@ -54,36 +51,39 @@ BEGIN
5451
IF p_id IS NOT NULL OR p_sessionId IS NOT NULL THEN
5552
-- set p_sampleId if not already set
5653
IF p_sessionId IS NOT NULL AND p_sampleId IS NULL AND p_sampleBarcode IS NOT NULL THEN
57-
IF row_proposal_id IS NULL THEN
58-
SELECT proposalId INTO row_proposal_id
59-
FROM BLSession
60-
WHERE sessionId = p_sessionId;
54+
IF row_proposal_id IS NULL THEN
55+
SELECT proposalId INTO row_proposal_id
56+
FROM BLSession
57+
WHERE sessionId = p_sessionId;
58+
END IF;
59+
SELECT max(bls.blSampleId) INTO p_sampleId
60+
FROM BLSample bls
61+
INNER JOIN Container c on c.containerId = bls.containerId
62+
INNER JOIN Dewar d on d.dewarId = c.dewarId
63+
INNER JOIN Shipping s on s.shippingId = d.shippingId
64+
WHERE bls.code = p_sampleBarcode AND s.proposalId = row_proposal_id;
6165
END IF;
62-
SELECT max(bls.blSampleId) INTO p_sampleId
63-
FROM BLSample bls
64-
INNER JOIN Container c on c.containerId = bls.containerId
65-
INNER JOIN Dewar d on d.dewarId = c.dewarId
66-
INNER JOIN Shipping s on s.shippingId = d.shippingId
67-
WHERE bls.code = p_sampleBarcode AND s.proposalId = row_proposal_id;
68-
END IF;
6966

70-
IF p_sampleId IS NULL AND (p_actualContainerBarcode IS NOT NULL) AND (p_actualSampleSlotInContainer IS NOT NULL) THEN
71-
SELECT max(bls.blSampleId) INTO p_sampleId
72-
FROM BLSample bls
73-
INNER JOIN Container c on c.containerId = bls.containerId
74-
WHERE c.barcode = p_actualContainerBarcode AND bls.location = p_actualSampleSlotInContainer;
75-
END IF;
67+
IF p_sampleId IS NULL AND (p_actualContainerBarcode IS NOT NULL) AND (p_actualSampleSlotInContainer IS NOT NULL) THEN
68+
SELECT max(bls.blSampleId) INTO p_sampleId
69+
FROM BLSample bls
70+
INNER JOIN Container c on c.containerId = bls.containerId
71+
WHERE c.barcode = p_actualContainerBarcode AND bls.location = p_actualSampleSlotInContainer;
72+
END IF;
73+
74+
SELECT experimentTypeId INTO row_experiment_id FROM ExperimentType WHERE name = p_experimenttype;
7675

77-
INSERT INTO DataCollectionGroup (datacollectionGroupId, sessionId, blsampleId, experimenttype, starttime, endtime,
76+
INSERT INTO DataCollectionGroup (datacollectionGroupId, sessionId, blsampleId, experimenttype, experimentTypeId, starttime, endtime,
7877
crystalClass, detectorMode, actualSampleBarcode, actualSampleSlotInContainer, actualContainerBarcode, actualContainerSlotInSC,
7978
comments, xtalSnapshotFullPath, scanParameters)
80-
VALUES (p_id, p_sessionId, p_sampleId, p_experimenttype, p_starttime, p_endtime, p_crystalClass, p_detectorMode,
79+
VALUES (p_id, p_sessionId, p_sampleId, p_experimenttype, row_experiment_id, p_starttime, p_endtime, p_crystalClass, p_detectorMode,
8180
p_actualSampleBarcode, p_actualSampleSlotInContainer, p_actualContainerBarcode, p_actualContainerSlotInSC,
8281
p_comments, p_xtalSnapshotFullPath, p_scanParameters)
8382
ON DUPLICATE KEY UPDATE
8483
sessionId = IFNULL(p_sessionId, sessionId),
8584
blsampleId = IFNULL(p_sampleId, blsampleId),
8685
experimenttype = IFNULL(p_experimenttype, experimenttype),
86+
experimentTypeId = row_experiment_id,
8787
starttime = IFNULL(p_starttime, starttime),
8888
endtime = IFNULL(p_endtime, endtime),
8989
crystalClass = IFNULL(p_crystalClass, crystalClass),
@@ -96,11 +96,11 @@ BEGIN
9696
xtalSnapshotFullPath = IFNULL(p_xtalSnapshotFullPath, xtalSnapshotFullPath),
9797
scanParameters = IFNULL (p_scanParameters, scanParameters);
9898

99-
IF p_id IS NULL THEN
100-
SET p_id = LAST_INSERT_ID();
99+
IF p_id IS NULL THEN
100+
SET p_id = LAST_INSERT_ID();
101101
END IF;
102-
ELSE
103-
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.';
104-
END IF;
105-
END;;
102+
ELSE
103+
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.';
104+
END IF;
105+
END;;
106106
DELIMITER ;

0 commit comments

Comments
 (0)