Skip to content
Snippets Groups Projects
44d5bbbf2615_workspaces_init.py 4.06 KiB
"""workspaces-init

Revision ID: 44d5bbbf2615
Revises: 
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
depends_on = None


def upgrade():
    op.create_table('workflows',
                    sa.Column('workflow_id', sa.Integer, primary_key=True, autoincrement=True,
                              comment='the unique id of the workflow. auto-generated.'),
                    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.';
    """


def downgrade():
    op.drop_table('workflows')