From b3293fce580bc77b2847d64d6b0c9194847099fb Mon Sep 17 00:00:00 2001
From: Daniel K Lyons <dlyons@nrao.edu>
Date: Wed, 2 Sep 2020 11:53:22 -0600
Subject: [PATCH] Add remaining tables for workflows

---
 .../versions/44d5bbbf2615_workspaces_init.py  | 69 ++++++-------------
 1 file changed, 20 insertions(+), 49 deletions(-)

diff --git a/schema/versions/44d5bbbf2615_workspaces_init.py b/schema/versions/44d5bbbf2615_workspaces_init.py
index 1d03cb25b..c2a58a44c 100644
--- a/schema/versions/44d5bbbf2615_workspaces_init.py
+++ b/schema/versions/44d5bbbf2615_workspaces_init.py
@@ -8,8 +8,6 @@ Create Date: 2020-09-02 11:25:01.571392
 from alembic import op
 import sqlalchemy as sa
 
-
-# revision identifiers, used by Alembic.
 revision = '44d5bbbf2615'
 down_revision = None
 branch_labels = None
@@ -23,54 +21,27 @@ def upgrade():
                     sa.Column('name', sa.String, unique=True, comment='a human-readable name for the workflow.'),
                     comment='A listing of the available workflows in the system.')
 
-    """
-    create table workflow_requests (
-        workflow_request_id serial  primary key ,
-                                            job_id              int,
-                                                                workflow_id         int references workflows(workflow_id),
-                                                                                                   argument            json
-    );
-    comment on table workflow_requests is 'A listing of requests for workflows and te resulting job ids.';
-    comment on column workflow_requests.workflow_request_id is 'the unique id of the request.  auto-generated';
-    comment on column workflow_requests.job_id is 'the id of the job that this request generted in the ? system.';
-    comment on column workflow_requests.workflow_id is 'the id of the workflow used in this request.';
-    comment on column workflow_requests.argument is 'the argument(s) used for the workflow in this request.';
-
-    create table workflow_request_files (
-        workflow_request_id int references workflow_requests(workflow_request_id),
-                                           file_id int references files(file_id),
-                                                                  primary key (workflow_request_id, file_id)
-    );
-    comment on table workflow_request_files is 'A man-to-many mapping table tracking which files were used for workflow requests.';
-    comment on column workflow_request_files.workflow_request_id is 'the id of the workflow request.';
-    comment on column workflow_request_files.file_id is 'the id of the file referenced by the workflow request.';
-
-    create table capabilities (
-        capability_id   serial primary key ,
-                                       name            varchar not null ,
-                                                               template_files  varchar,
-                                                                               steps           varchar not null
-    );
-    comment on table capabilities is 'A listing of the available capabilities in the system.';
-    comment on column capabilities.capability_id is 'the unique id of the capability.  auto-generated.';
-    comment on column capabilities.name is 'the human-readable name of the capability.';
-    comment on column capabilities.template_files is '?';
-    comment on column capabilities.steps is 'the unique id of the capability.  auto-generated.';
-
-    create table capability_requests (
-        capability_request_id serial primary key ,
-                                             capability_id int references capabilities(capability_id),
-                                                                          user_id int not null ,
-                                                                                      argument json
-    );
-
-    comment on table capability_requests is 'A listing of requests for capabilities, with the id of the requesting user.';
-    comment on column capability_requests.capability_request_id is 'The unique id of the request.  auto-generated.';
-    comment on column capability_requests.capability_id is 'the id of the capability being requested.';
-    comment on column capability_requests.user_id is 'the id of the user requesting the capability.';
-    comment on column capability_requests.argument is 'the JSON holding the details of the request.';
-    """
+    op.create_table('workflow_requests',
+                    sa.Column('workflow_request_id', sa.Integer, primary_key=True, autoincrement=True,
+                              comment='the unique id of the request. auto-generated'),
+                    sa.Column('job_id', sa.Integer,
+                              comment='the id of the job that this request generted in the HTCondor system.'),
+                    sa.Column('workflow_id', sa.Integer, sa.ForeignKey('workflows.workflow_id'),
+                              comment='the id of the workflow used in this request.'),
+                    sa.Column('argument', sa.JSON, comment='the argument(s) used for the workflow in this request.'),
+                    comment='A listing of requests for workflows and te resulting job ids.')
+
+    op.create_table('workflow_request_files',
+                    sa.Column('workflow_request_id', sa.Integer, sa.ForeignKey('workflow_requests.workflow_request_id'),
+                              comment='the id of the workflow request.'),
+                    sa.Column('filename', sa.String, comment='the name of this file', nullable=False),
+                    sa.Column('content', sa.String, comment='the contents of the file', nullable=False),
+                    comment='A man-to-many mapping table tracking which files were used for workflow requests.')
+    op.create_unique_constraint('workflow_request_filenames_uniq', 'workflow_request_files',
+                                ['workflow_request_id', 'filename'])
 
 
 def downgrade():
+    op.drop_table('workflow_request_files')
+    op.drop_table('workflow_requests')
     op.drop_table('workflows')
\ No newline at end of file
-- 
GitLab