From 7bec4f1e744af5a4fddabae6e7268c34e33b1e5c Mon Sep 17 00:00:00 2001 From: "Zhou (Joe) Yuan" Date: Mon, 28 Nov 2022 10:59:14 -0500 Subject: [PATCH 1/5] Update README.md --- README.md | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 2309f0f..511d28b 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ cd docker ./docker-development.sh [check|config|build|start|stop|down] ``` -## Docker build for deployment on TEST/STAGE/PROD +## Docker build for deployment on PROD ``` cd hubmap-docker @@ -57,13 +57,6 @@ cd hubmap-docker ## Development process -### To release via TEST infrastructure -- Make new feature or bug fix branches from `main` branch (the default branch) -- Make PRs to `main` -- As a codeowner, Zhou (github username `yuanzhou`) is automatically assigned as a reviewer to each PR. When all other reviewers have approved, he will approve as well, merge to TEST infrastructure, and redeploy the TEST instance. -- Developer or someone on the team who is familiar with the change will test/qa the change -- When any current changes in the `main` have been approved after test/qa on TEST, Zhou will release to PROD using the same docker image that has been tested on TEST infrastructure. - ### To work on features in the development environment before ready for testing and releasing - Make new feature branches off the `main` branch - Make PRs to `dev-integrate` @@ -73,4 +66,4 @@ cd hubmap-docker ### Updating API Documentation -The documentation for the API calls is hosted on SmartAPI. Modifying the `uuid-api-spec.yaml` file and commititng the changes to github should update the API shown on SmartAPI. SmartAPI allows users to register API documents. The documentation is associated with this github account: api-developers@hubmapconsortium.org. +The documentation for the API calls is hosted on SmartAPI. Modifying the `files-api-spec.yaml` file and commititng the changes to github should update the API shown on SmartAPI. SmartAPI allows users to register API documents. The documentation is associated with this github account: api-developers@hubmapconsortium.org. From 94481458ee02526e0025ad67764181295bebd988 Mon Sep 17 00:00:00 2001 From: Karl Burke Date: Thu, 12 Jan 2023 12:56:56 -0500 Subject: [PATCH 2/5] Add files.LAST_MODIFIED column, and change the default value of uuids.TIME_GENERATED in the MySQL Workbench model. Update ER diagram and generated DDL. --- sql/uuid-api.mwb | Bin 11645 -> 11929 bytes sql/uuid-api.pdf | Bin 32138 -> 32178 bytes sql/uuid-api.sql | 3 ++- 3 files changed, 2 insertions(+), 1 deletion(-) diff --git a/sql/uuid-api.mwb b/sql/uuid-api.mwb index 183fe2b7b172d7881ba55b61b7f118ac83e14db1..e45c60232ed00a728c7ad8839607a135a6141ed5 100644 GIT binary patch delta 11497 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 delta 11223 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 delta 14860 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 diff --git a/sql/uuid-api.sql b/sql/uuid-api.sql index a488eeb..b128064 100644 --- a/sql/uuid-api.sql +++ b/sql/uuid-api.sql @@ -14,7 +14,7 @@ SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,N CREATE TABLE IF NOT EXISTS `uuids` ( `UUID` CHAR(32) NOT NULL, `ENTITY_TYPE` VARCHAR(20) NOT NULL, - `TIME_GENERATED` TIMESTAMP NOT NULL, + `TIME_GENERATED` TIMESTAMP NOT NULL DEFAULT now(), `USER_ID` VARCHAR(50) NOT NULL, `USER_EMAIL` VARCHAR(50) NULL DEFAULT NULL, PRIMARY KEY (`UUID`)) @@ -77,6 +77,7 @@ CREATE TABLE IF NOT EXISTS `files` ( `PATH` MEDIUMTEXT NULL DEFAULT NULL, `CHECKSUM` VARCHAR(50) NULL DEFAULT NULL, `SIZE` BIGINT NULL DEFAULT NULL, + `LAST_MODIFIED` TIMESTAMP NOT NULL DEFAULT now() ON UPDATE now(), PRIMARY KEY (`UUID`), CONSTRAINT `files_ibfk_1` FOREIGN KEY (`UUID`) From 6ee0e35cf6c98ba916cde40e2555f3589c7f5843 Mon Sep 17 00:00:00 2001 From: Karl Burke Date: Thu, 12 Jan 2023 13:58:37 -0500 Subject: [PATCH 3/5] Update database setup directions with CREATE DATABASE command to be done manually before using DDL file. --- sql/README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sql/README.md b/sql/README.md index bc2278f..61c8455 100644 --- a/sql/README.md +++ b/sql/README.md @@ -48,3 +48,11 @@ Click "Next". Examine the generated SQL script to assure it is independent of t Click "Cancel" to abandon the rest of the "forward engineer" process. +## Create as database in which DDL script will execute +A database should be created on the server to receive the DDL commands generated by "forward engineer." + +Ways of creating the database vary by platform (e.g. MySQL Workbench, dBeaver, mysql AKA the command line client.) The essential command to run is: +```` +CREATE DATABASE `hm_kbkbkb_uuid` +```` +Note the backquotes of this command. Also decide whether you want to start with a customized name, and how you will manage that if the database will eventually become Dev, Stage, or Prod. From 53b5207e5bc335f1c581a712cddb11bb249d01d5 Mon Sep 17 00:00:00 2001 From: Karl Burke Date: Wed, 18 Jan 2023 09:20:35 -0500 Subject: [PATCH 4/5] file_worker.py --- src/uuid_worker.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/uuid_worker.py b/src/uuid_worker.py index 0e27b25..5ae1c39 100644 --- a/src/uuid_worker.py +++ b/src/uuid_worker.py @@ -1,3 +1,4 @@ +from datetime import datetime, timezone import logging import mysql.connector.errors @@ -611,7 +612,9 @@ def newUUIDs(self, parentIDs, entityType, userId, userEmail, nIds, organ_code=No # if entityType == 'DONOR': gen_base_ids = entityType in ID_ENTITY_TYPES returnIds = [] - now = time.strftime('%Y-%m-%d %H:%M:%S') + # See admonition at https://docs.python.org/3/library/datetime.html#datetime.datetime.utcnow to + # retrieve a non-naive UTC time. + awareUTCTimeNow = datetime.now(timezone.utc) store_file_info = False if entityType == 'FILE': store_file_info = True @@ -673,7 +676,7 @@ def newUUIDs(self, parentIDs, entityType, userId, userEmail, nIds, organ_code=No # insRow = (insUuid, ins_app_base_id, entityType, now, userId, userEmail) # Only set the attributes tuple of committing attributes to the table besides the UUID - insertVals.append((insUuid, entityType, now, userId, userEmail)) + insertVals.append((insUuid, entityType, awareUTCTimeNow, userId, userEmail)) if insert_attributes_for_uuid: insertAttribVals.append((insUuid, ins_app_base_id, submission_ids[n] if gen_submission_ids else None)) From 4f4b1d746836391dae97d871b7af3734c4b4d117 Mon Sep 17 00:00:00 2001 From: Karl Burke Date: Wed, 18 Jan 2023 13:38:21 -0500 Subject: [PATCH 5/5] Reference correct file name and fix typo. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 511d28b..4da9e57 100644 --- a/README.md +++ b/README.md @@ -66,4 +66,4 @@ cd hubmap-docker ### Updating API Documentation -The documentation for the API calls is hosted on SmartAPI. Modifying the `files-api-spec.yaml` file and commititng the changes to github should update the API shown on SmartAPI. SmartAPI allows users to register API documents. The documentation is associated with this github account: api-developers@hubmapconsortium.org. +The documentation for the API calls is hosted on SmartAPI. Modifying the `uuid-api-spec.yaml` file and committing the changes to GitHub should update the API shown on SmartAPI. SmartAPI allows users to register API documents. The documentation is associated with this GitHub account: api-developers@hubmapconsortium.org.