aboutsummaryrefslogtreecommitdiffstats
path: root/workflow-designer-init/src
diff options
context:
space:
mode:
Diffstat (limited to 'workflow-designer-init/src')
-rw-r--r--workflow-designer-init/src/main/docker/Dockerfile10
-rw-r--r--workflow-designer-init/src/main/docker/create_workflow_db.cql125
-rw-r--r--workflow-designer-init/src/main/docker/start.sh33
3 files changed, 168 insertions, 0 deletions
diff --git a/workflow-designer-init/src/main/docker/Dockerfile b/workflow-designer-init/src/main/docker/Dockerfile
new file mode 100644
index 00000000..75e7efdc
--- /dev/null
+++ b/workflow-designer-init/src/main/docker/Dockerfile
@@ -0,0 +1,10 @@
+FROM alpine:3.7
+
+RUN apk add --no-cache 'python<3' py-pip && pip install cqlsh==4.0.1
+
+COPY create_workflow_db.cql .
+COPY start.sh .
+
+RUN chmod 744 start.sh
+
+ENTRYPOINT ["./start.sh"] \ No newline at end of file
diff --git a/workflow-designer-init/src/main/docker/create_workflow_db.cql b/workflow-designer-init/src/main/docker/create_workflow_db.cql
new file mode 100644
index 00000000..c6c1f15e
--- /dev/null
+++ b/workflow-designer-init/src/main/docker/create_workflow_db.cql
@@ -0,0 +1,125 @@
+CREATE KEYSPACE IF NOT EXISTS WORKFLOW
+WITH DURABLE_WRITES = TRUE
+AND REPLICATION = {
+ 'class' : 'SimpleStrategy',
+ 'replication_factor' : 1
+};
+
+USE WORKFLOW;
+
+CREATE TABLE IF NOT EXISTS UNIQUE_VALUE (
+ TYPE TEXT,
+ VALUE TEXT,
+ PRIMARY KEY (( TYPE, VALUE ))
+);
+
+CREATE KEYSPACE IF NOT EXISTS ZUSAMMEN_WORKFLOW
+WITH REPLICATION = {
+ 'class' : 'SimpleStrategy',
+ 'replication_factor' : 1
+};
+
+USE ZUSAMMEN_WORKFLOW;
+
+CREATE TABLE IF NOT EXISTS ITEM (
+ ITEM_ID TEXT PRIMARY KEY,
+ ITEM_INFO TEXT,
+ CREATION_TIME TIMESTAMP,
+ MODIFICATION_TIME TIMESTAMP
+);
+
+CREATE TABLE IF NOT EXISTS VERSION (
+ SPACE TEXT,
+ ITEM_ID TEXT,
+ VERSION_ID TEXT,
+ BASE_VERSION_ID TEXT,
+ INFO TEXT,
+ RELATIONS TEXT,
+ CREATION_TIME TIMESTAMP,
+ MODIFICATION_TIME TIMESTAMP,
+ PRIMARY KEY (( SPACE, ITEM_ID ), VERSION_ID)
+);
+
+CREATE TABLE IF NOT EXISTS VERSION_ELEMENTS (
+ SPACE TEXT,
+ ITEM_ID TEXT,
+ VERSION_ID TEXT,
+ REVISION_ID TEXT,
+ ELEMENT_IDS MAP<TEXT, TEXT>,
+ DIRTY_ELEMENT_IDS SET<TEXT>,
+ STAGE_ELEMENT_IDS SET<TEXT>,
+ CONFLICT_ELEMENT_IDS SET<TEXT>,
+ PUBLISH_TIME TIMESTAMP,
+ USER TEXT,
+ MESSAGE TEXT,
+ PRIMARY KEY (( SPACE, ITEM_ID, VERSION_ID ), REVISION_ID)
+);
+
+CREATE TABLE IF NOT EXISTS ELEMENT_NAMESPACE (
+ ITEM_ID TEXT,
+ ELEMENT_ID TEXT,
+ NAMESPACE TEXT,
+ PRIMARY KEY (( ITEM_ID, ELEMENT_ID ))
+);
+
+CREATE TABLE IF NOT EXISTS ELEMENT (
+ SPACE TEXT,
+ ITEM_ID TEXT,
+ VERSION_ID TEXT,
+ ELEMENT_ID TEXT,
+ REVISION_ID TEXT,
+ PARENT_ID TEXT,
+ NAMESPACE TEXT,
+ INFO TEXT,
+ RELATIONS TEXT,
+ DATA BLOB,
+ SEARCHABLE_DATA BLOB,
+ VISUALIZATION BLOB,
+ SUB_ELEMENT_IDS SET<TEXT>,
+ ELEMENT_HASH TEXT,
+ PRIMARY KEY (( SPACE, ITEM_ID, VERSION_ID, ELEMENT_ID ), REVISION_ID)
+);
+
+CREATE TABLE IF NOT EXISTS ELEMENT_SYNCHRONIZATION_STATE (
+ SPACE TEXT,
+ ITEM_ID TEXT,
+ VERSION_ID TEXT,
+ ELEMENT_ID TEXT,
+ REVISION_ID TEXT,
+ PUBLISH_TIME TIMESTAMP,
+ DIRTY BOOLEAN,
+ PRIMARY KEY (( SPACE, ITEM_ID, VERSION_ID ), ELEMENT_ID, REVISION_ID)
+);
+
+CREATE TABLE IF NOT EXISTS ELEMENT_STAGE (
+ SPACE TEXT,
+ ITEM_ID TEXT,
+ VERSION_ID TEXT,
+ ELEMENT_ID TEXT,
+ PARENT_ID TEXT,
+ NAMESPACE TEXT,
+ INFO TEXT,
+ RELATIONS TEXT,
+ DATA BLOB,
+ SEARCHABLE_DATA BLOB,
+ VISUALIZATION BLOB,
+ SUB_ELEMENT_IDS SET<TEXT>,
+ ELEMENT_HASH TEXT,
+ PUBLISH_TIME TIMESTAMP,
+ ACTION TEXT,
+ CONFLICTED BOOLEAN,
+ CONFLICT_DEPENDENT_IDS SET<TEXT>,
+ PRIMARY KEY (( SPACE, ITEM_ID, VERSION_ID, ELEMENT_ID ))
+);
+
+CREATE TABLE IF NOT EXISTS VERSION_STAGE (
+ SPACE TEXT,
+ ITEM_ID TEXT,
+ VERSION_ID TEXT,
+ BASE_VERSION_ID TEXT,
+ CREATION_TIME TIMESTAMP,
+ MODIFICATION_TIME TIMESTAMP,
+ PUBLISH_TIME TIMESTAMP,
+ ACTION TEXT,
+ PRIMARY KEY (( SPACE, ITEM_ID ), VERSION_ID)
+); \ No newline at end of file
diff --git a/workflow-designer-init/src/main/docker/start.sh b/workflow-designer-init/src/main/docker/start.sh
new file mode 100644
index 00000000..919277fd
--- /dev/null
+++ b/workflow-designer-init/src/main/docker/start.sh
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+is_cs_unauthenticated=1
+FALSE=0
+if [[ -z "${CS_AUTHENTICATE}" || "${CS_AUTHENTICATE}" == "false" ]]; then
+ is_cs_unauthenticated=$FALSE
+fi
+
+if [ $is_cs_unauthenticated -eq $FALSE ]; then
+ echo "Establishing unsecured connection to Cassandra"
+fi
+
+if [[ $is_cs_unauthenticated -eq 1 && -z "${CS_USER}" ]]; then
+ echo "CS_USER environment variable must be set"
+ exit 1
+fi
+
+if [[ $is_cs_unauthenticated -eq 1 && -z "${CS_PASSWORD}" ]]; then
+ echo "CS_PASSWORD environment variable must be set"
+ exit 1
+fi
+
+if [[ -z "${CS_HOST}" ]]; then
+ echo "CS_HOST environment variable must be set"
+ exit 1
+fi
+
+if [ $is_cs_unauthenticated -eq 1 ]; then
+ cqlsh -u ${CS_USER} -p ${CS_PASSWORD} -f /create_workflow_db.cql ${CS_HOST} ${CS_PORT}
+else
+ cqlsh -f /create_workflow_db.cql ${CS_HOST} ${CS_PORT}
+fi
+