Skip to content

Commit

Permalink
Merge pull request #40 from DiamondLightSource/new_release_1.14.0
Browse files Browse the repository at this point in the history
New release 1.14.0
  • Loading branch information
KarlLevik committed Oct 17, 2020
2 parents 7881382 + 52b86b7 commit 1ae2d41
Show file tree
Hide file tree
Showing 9 changed files with 396 additions and 28 deletions.
1 change: 1 addition & 0 deletions docs/list_of_procs.rst
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@
"**retrieve_proposal_title**","p_proposal_code varchar(5), p_proposal_number int","Returns a single-row, single-column result set with the title of the proposal p_proposal_code + p_proposal_number"
"**retrieve_proposal_title**","p_proposal_code varchar(5), p_proposal_number int, p_authLogin varchar(45)","Returns a single-row, single-column result set with the title of the proposal p_proposal_code + p_proposal_number"
"**retrieve_reprocessing_by_dc**","p_dcId int(11) unsigned","Retrieves reprocessing requests for a data collection (p_dcId)."
"**retrieve_sample**","p_id int unsigned, p_useContainerSession boolean, p_authLogin varchar(45)","Returns a single-row result-set with the sample for the given ID"
"**retrieve_samples_assigned_for_proposal**","IN p_proposalCode varchar(3), IN p_proposalNumber int","Retrieve the user friendly name and ID of all assigned instances"
"**retrieve_samples_for_sample_group**","IN p_sampleGroupId int unsigned","Return multi-row result set with sample IDs, order in the group"
"**retrieve_samples_not_loaded_for_container_reg_barcode**","p_barcode varchar(20)",""
Expand Down
18 changes: 18 additions & 0 deletions docs/list_of_tables_and_columns.rst
Original file line number Diff line number Diff line change
Expand Up @@ -472,6 +472,8 @@
``componentSubTypeId``,int,""
``name``,varchar,""
``hasPh``,tinyint,""
``proposalType``,varchar,""
``active``,tinyint,"1=active, 0=inactive"
**ComponentType**,table,""
``componentTypeId``,int,""
``name``,varchar,""
Expand All @@ -482,6 +484,8 @@
``concentrationTypeId``,int,""
``name``,varchar,""
``symbol``,varchar,""
``proposalType``,varchar,""
``active``,tinyint,"1=active, 0=inactive"
**Container**,table,""
``containerId``,int,""
``dewarId``,int,""
Expand Down Expand Up @@ -749,6 +753,7 @@
``workflowId``,int,""
``xtalSnapshotFullPath``,varchar,""
``scanParameters``,longtext,""
``experimentTypeId``,int,""
**DataCollectionPlan_has_Detector**,table,""
``dataCollectionPlanHasDetectorId``,int,""
``dataCollectionPlanId``,int,""
Expand Down Expand Up @@ -898,6 +903,10 @@
``monoBandwidth``,double,""
``centringMethod``,enum,""
``userPath``,varchar,"User-specified relative "root" path inside the session directory to be used for holding collected data"
``robotPlateTemperature``,float,"units: kelvin"
``exposureTemperature``,float,"units: kelvin"
``experimentTypeId``,int,""
``purificationColumnId``,int,""
**EMMicroscope**,table,""
``emMicroscopeId``,int,""
``instrumentName``,varchar,""
Expand Down Expand Up @@ -960,6 +969,11 @@
``dataCollectionType``,varchar,""
``dataCollectionKind``,varchar,""
``wedgeValue``,float,""
**ExperimentType**,table,"A lookup table for different types of experients"
``experimentTypeId``,int,""
``name``,varchar,""
``proposalType``,varchar,""
``active``,tinyint,"1=active, 0=inactive"
**Frame**,table,""
``frameId``,int,""
``FRAMESETID``,int,""
Expand Down Expand Up @@ -1514,6 +1528,10 @@
``proteinhaspdbid``,int,""
``proteinid``,int,""
``pdbid``,int,""
**PurificationColumn**,table,"Size exclusion chromotography (SEC) lookup table for BioSAXS"
``purificationColumnId``,int,""
``name``,varchar,""
``active``,tinyint,"1=active, 0=inactive"
**RobotAction**,table,"Robot actions as reported by GDA"
``robotActionId``,int,""
``blsessionId``,int,""
Expand Down
2 changes: 2 additions & 0 deletions grants/ispyb_acquisition.sql
Original file line number Diff line number Diff line change
Expand Up @@ -50,3 +50,5 @@ GRANT EXECUTE ON PROCEDURE retrieve_dc_group_v2 TO 'ispyb_acquisition';
GRANT EXECUTE ON PROCEDURE retrieve_sleeve TO 'ispyb_acquisition';
GRANT EXECUTE ON PROCEDURE retrieve_sleeves TO 'ispyb_acquisition';
GRANT EXECUTE ON PROCEDURE upsert_sleeve TO 'ispyb_acquisition';

GRANT EXECUTE ON PROCEDURE retrieve_sample TO 'ispyb_acquisition';
24 changes: 16 additions & 8 deletions schema/data.sql

Large diffs are not rendered by default.

30 changes: 23 additions & 7 deletions schema/lookups.sql

Large diffs are not rendered by default.

144 changes: 138 additions & 6 deletions schema/routines.sql
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
-- MariaDB dump 10.17 Distrib 10.4.13-MariaDB, for Linux (x86_64)
-- MariaDB dump 10.17 Distrib 10.5.6-MariaDB, for Linux (x86_64)
--
-- Host: localhost Database: ispyb_build
-- ------------------------------------------------------
-- Server version 10.4.13-MariaDB
-- Server version 10.5.6-MariaDB

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
Expand Down Expand Up @@ -3960,6 +3960,138 @@ DELIMITER ;
/*!50003 SET character_set_client = @saved_cs_client */ ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 DROP PROCEDURE IF EXISTS `retrieve_sample` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
/*!50003 SET character_set_client = utf8 */ ;
/*!50003 SET character_set_results = utf8 */ ;
/*!50003 SET collation_connection = utf8_general_ci */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
CREATE PROCEDURE `retrieve_sample`(p_id int unsigned, p_useContainerSession boolean, p_authLogin varchar(45))
READS SQL DATA
COMMENT 'Returns a single-row result-set with the sample for the given ID'
BEGIN
IF p_id IS NOT NULL THEN

IF p_useContainerSession = True THEN

IF p_authLogin IS NOT NULL THEN


SELECT bls.blSampleId "sampleId",
bls.containerId "containerId",
bls.diffractionPlanId "dataCollectionPlanId",
bls.name "sampleName",
bls.code "sampleCode",
bls.comments "sampleComments",
bls.location "sampleLocation",
bls.subLocation "sampleSubLocation",
bls.blSampleStatus "sampleStatus",
p.proposalId "proposalId",
p.proposalCode "proposalCode",
p.proposalNumber "proposalNumber",
bs.sessionId "sessionId",
bs.visit_number "sessionNumber"
FROM BLSample bls
INNER JOIN Container c ON c.containerId = bls.containerId
INNER JOIN BLSession bs ON c.sessionId = bs.sessionId
INNER JOIN Proposal p ON p.proposalId = bs.proposalId
INNER JOIN Session_has_Person shp ON bs.sessionId = shp.sessionId
INNER JOIN Person pe ON pe.personId = shp.personId
WHERE pe.login = p_authLogin AND bls.blSampleId = p_id;

ELSE

SELECT bls.blSampleId "sampleId",
bls.containerId "containerId",
bls.diffractionPlanId "dataCollectionPlanId",
bls.name "sampleName",
bls.code "sampleCode",
bls.comments "sampleComments",
bls.location "sampleLocation",
bls.subLocation "sampleSubLocation",
bls.blSampleStatus "sampleStatus",
p.proposalId "proposalId",
p.proposalCode "proposalCode",
p.proposalNumber "proposalNumber",
bs.sessionId "sessionId",
bs.visit_number "sessionNumber"
FROM BLSample bls
INNER JOIN Container c ON c.containerId = bls.containerId
INNER JOIN BLSession bs ON c.sessionId = bs.sessionId
INNER JOIN Proposal p ON p.proposalId = bs.proposalId
WHERE bls.blSampleId = p_id;

END IF;

ELSE

IF p_authLogin IS NOT NULL THEN


SELECT bls.blSampleId "sampleId",
bls.containerId "containerId",
bls.diffractionPlanId "dataCollectionPlanId",
bls.name "sampleName",
bls.code "sampleCode",
bls.comments "sampleComments",
bls.location "sampleLocation",
bls.subLocation "sampleSubLocation",
bls.blSampleStatus "sampleStatus",
p.proposalId "proposalId",
p.proposalCode "proposalCode",
p.proposalNumber "proposalNumber",
NULL "sessionId",
NULL "sessionNumber"
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
INNER JOIN Proposal p ON p.proposalId = s.proposalId
INNER JOIN BLSession bs ON bs.proposalId = p.proposalId
INNER JOIN Session_has_Person shp ON bs.sessionId = shp.sessionId
INNER JOIN Person pe ON pe.personId = shp.personId
WHERE pe.login = p_authLogin AND bls.blSampleId = p_id;

ELSE

SELECT bls.blSampleId "sampleId",
bls.containerId "containerId",
bls.diffractionPlanId "dataCollectionPlanId",
bls.name "sampleName",
bls.code "sampleCode",
bls.comments "sampleComments",
bls.location "sampleLocation",
bls.subLocation "sampleSubLocation",
bls.blSampleStatus "sampleStatus",
p.proposalId "proposalId",
p.proposalCode "proposalCode",
p.proposalNumber "proposalNumber",
NULL "sessionId",
NULL "sessionNumber"
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
INNER JOIN Proposal p ON p.proposalId = s.proposalId
WHERE bls.blSampleId = p_id;

END IF;

END IF;

ELSE
SIGNAL SQLSTATE '45000' SET MYSQL_ERRNO=1644, MESSAGE_TEXT='Mandatory argument p_id can not be NULL';
END IF;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
/*!50003 SET character_set_client = @saved_cs_client */ ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 DROP PROCEDURE IF EXISTS `retrieve_samples_assigned_for_proposal` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
Expand Down Expand Up @@ -7960,12 +8092,12 @@ DELIMITER ;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2020-07-13 20:02:24
-- MariaDB dump 10.17 Distrib 10.4.13-MariaDB, for Linux (x86_64)
-- Dump completed on 2020-10-16 17:05:55
-- MariaDB dump 10.17 Distrib 10.5.6-MariaDB, for Linux (x86_64)
--
-- Host: localhost Database: ispyb_build
-- ------------------------------------------------------
-- Server version 10.4.13-MariaDB
-- Server version 10.5.6-MariaDB

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
Expand Down Expand Up @@ -8006,4 +8138,4 @@ DELIMITER ;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2020-07-13 20:02:24
-- Dump completed on 2020-10-16 17:05:55
120 changes: 120 additions & 0 deletions schema/stored_programs/sp_retrieve_sample.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
DELIMITER ;;
CREATE OR REPLACE DEFINER=`ispyb_root`@`%` PROCEDURE `retrieve_sample`(p_id int unsigned, p_useContainerSession boolean, p_authLogin varchar(45))
READS SQL DATA
COMMENT 'Returns a single-row result-set with the sample for the given ID'
BEGIN
IF p_id IS NOT NULL THEN

IF p_useContainerSession = True THEN

IF p_authLogin IS NOT NULL THEN
-- Authorise only if the person (p_authLogin) is a member of a session on the proposal.

SELECT bls.blSampleId "sampleId",
bls.containerId "containerId",
bls.diffractionPlanId "dataCollectionPlanId",
bls.name "sampleName",
bls.code "sampleCode",
bls.comments "sampleComments",
bls.location "sampleLocation",
bls.subLocation "sampleSubLocation",
bls.blSampleStatus "sampleStatus",
p.proposalId "proposalId",
p.proposalCode "proposalCode",
p.proposalNumber "proposalNumber",
bs.sessionId "sessionId",
bs.visit_number "sessionNumber"
FROM BLSample bls
INNER JOIN Container c ON c.containerId = bls.containerId
INNER JOIN BLSession bs ON c.sessionId = bs.sessionId
INNER JOIN Proposal p ON p.proposalId = bs.proposalId
INNER JOIN Session_has_Person shp ON bs.sessionId = shp.sessionId
INNER JOIN Person pe ON pe.personId = shp.personId
WHERE pe.login = p_authLogin AND bls.blSampleId = p_id;

ELSE

SELECT bls.blSampleId "sampleId",
bls.containerId "containerId",
bls.diffractionPlanId "dataCollectionPlanId",
bls.name "sampleName",
bls.code "sampleCode",
bls.comments "sampleComments",
bls.location "sampleLocation",
bls.subLocation "sampleSubLocation",
bls.blSampleStatus "sampleStatus",
p.proposalId "proposalId",
p.proposalCode "proposalCode",
p.proposalNumber "proposalNumber",
bs.sessionId "sessionId",
bs.visit_number "sessionNumber"
FROM BLSample bls
INNER JOIN Container c ON c.containerId = bls.containerId
INNER JOIN BLSession bs ON c.sessionId = bs.sessionId
INNER JOIN Proposal p ON p.proposalId = bs.proposalId
WHERE bls.blSampleId = p_id;

END IF;

ELSE

IF p_authLogin IS NOT NULL THEN
-- Authorise only if the person (p_authLogin) is a member of a session on the proposal.

SELECT bls.blSampleId "sampleId",
bls.containerId "containerId",
bls.diffractionPlanId "dataCollectionPlanId",
bls.name "sampleName",
bls.code "sampleCode",
bls.comments "sampleComments",
bls.location "sampleLocation",
bls.subLocation "sampleSubLocation",
bls.blSampleStatus "sampleStatus",
p.proposalId "proposalId",
p.proposalCode "proposalCode",
p.proposalNumber "proposalNumber",
NULL "sessionId",
NULL "sessionNumber"
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
INNER JOIN Proposal p ON p.proposalId = s.proposalId
INNER JOIN BLSession bs ON bs.proposalId = p.proposalId
INNER JOIN Session_has_Person shp ON bs.sessionId = shp.sessionId
INNER JOIN Person pe ON pe.personId = shp.personId
WHERE pe.login = p_authLogin AND bls.blSampleId = p_id;

ELSE

SELECT bls.blSampleId "sampleId",
bls.containerId "containerId",
bls.diffractionPlanId "dataCollectionPlanId",
bls.name "sampleName",
bls.code "sampleCode",
bls.comments "sampleComments",
bls.location "sampleLocation",
bls.subLocation "sampleSubLocation",
bls.blSampleStatus "sampleStatus",
p.proposalId "proposalId",
p.proposalCode "proposalCode",
p.proposalNumber "proposalNumber",
NULL "sessionId",
NULL "sessionNumber"
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
INNER JOIN Proposal p ON p.proposalId = s.proposalId
WHERE bls.blSampleId = p_id;

END IF;

END IF;

ELSE
SIGNAL SQLSTATE '45000' SET MYSQL_ERRNO=1644, MESSAGE_TEXT='Mandatory argument p_id can not be NULL';
END IF;
END;;
DELIMITER ;

Loading

0 comments on commit 1ae2d41

Please sign in to comment.