From 50acac81602b96a4492cf6f7d88ec1aa0405e6be Mon Sep 17 00:00:00 2001 From: jasquat Date: Fri, 17 Mar 2023 16:52:05 -0400 Subject: [PATCH] some more index updates and a new migration for it w/ burnettk --- spiffworkflow-backend/migrations/env.py | 2 - .../{2596a98f760b_.py => b652c232839f_.py} | 125 +++++++++++++++--- .../models/bpmn_process.py | 5 +- .../models/bpmn_process_definition.py | 7 +- .../models/correlation_property_cache.py | 4 +- .../src/spiffworkflow_backend/models/group.py | 4 +- .../models/human_task.py | 4 +- .../spiffworkflow_backend/models/json_data.py | 2 +- .../models/message_instance.py | 2 +- .../message_triggerable_process_model.py | 2 +- .../models/process_instance.py | 6 +- .../models/process_instance_file_data.py | 4 +- .../models/process_instance_metadata.py | 4 +- .../models/process_instance_queue.py | 2 +- .../models/spec_reference.py | 2 +- .../models/spiff_step_details.py | 4 +- .../src/spiffworkflow_backend/models/task.py | 4 +- 17 files changed, 130 insertions(+), 53 deletions(-) rename spiffworkflow-backend/migrations/versions/{2596a98f760b_.py => b652c232839f_.py} (73%) diff --git a/spiffworkflow-backend/migrations/env.py b/spiffworkflow-backend/migrations/env.py index 68feded2..630e381a 100644 --- a/spiffworkflow-backend/migrations/env.py +++ b/spiffworkflow-backend/migrations/env.py @@ -1,5 +1,3 @@ -from __future__ import with_statement - import logging from logging.config import fileConfig diff --git a/spiffworkflow-backend/migrations/versions/2596a98f760b_.py b/spiffworkflow-backend/migrations/versions/b652c232839f_.py similarity index 73% rename from spiffworkflow-backend/migrations/versions/2596a98f760b_.py rename to spiffworkflow-backend/migrations/versions/b652c232839f_.py index 75fa9d21..dbf5b276 100644 --- a/spiffworkflow-backend/migrations/versions/2596a98f760b_.py +++ b/spiffworkflow-backend/migrations/versions/b652c232839f_.py @@ -1,8 +1,8 @@ """empty message -Revision ID: 2596a98f760b +Revision ID: b652c232839f Revises: -Create Date: 2023-03-17 15:49:31.968141 +Create Date: 2023-03-17 16:50:32.774216 """ from alembic import op @@ -10,7 +10,7 @@ import sqlalchemy as sa from sqlalchemy.dialects import mysql # revision identifiers, used by Alembic. -revision = '2596a98f760b' +revision = 'b652c232839f' down_revision = None branch_labels = None depends_on = None @@ -24,16 +24,15 @@ def upgrade(): sa.Column('bpmn_identifier', sa.String(length=255), nullable=False), sa.Column('bpmn_name', sa.String(length=255), nullable=True), sa.Column('properties_json', sa.JSON(), nullable=False), - sa.Column('type', sa.String(length=32), nullable=True), sa.Column('bpmn_version_control_type', sa.String(length=50), nullable=True), sa.Column('bpmn_version_control_identifier', sa.String(length=255), nullable=True), sa.Column('updated_at_in_seconds', sa.Integer(), nullable=True), sa.Column('created_at_in_seconds', sa.Integer(), nullable=True), - sa.PrimaryKeyConstraint('id') + sa.PrimaryKeyConstraint('id'), + sa.UniqueConstraint('hash') ) op.create_index(op.f('ix_bpmn_process_definition_bpmn_identifier'), 'bpmn_process_definition', ['bpmn_identifier'], unique=False) op.create_index(op.f('ix_bpmn_process_definition_bpmn_name'), 'bpmn_process_definition', ['bpmn_name'], unique=False) - op.create_index(op.f('ix_bpmn_process_definition_hash'), 'bpmn_process_definition', ['hash'], unique=True) op.create_table('correlation_property_cache', sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.String(length=50), nullable=False), @@ -42,19 +41,23 @@ def upgrade(): sa.Column('retrieval_expression', sa.String(length=255), nullable=True), sa.PrimaryKeyConstraint('id') ) + op.create_index(op.f('ix_correlation_property_cache_message_name'), 'correlation_property_cache', ['message_name'], unique=False) + op.create_index(op.f('ix_correlation_property_cache_name'), 'correlation_property_cache', ['name'], unique=False) op.create_table('group', sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.String(length=255), nullable=True), sa.Column('identifier', sa.String(length=255), nullable=True), sa.PrimaryKeyConstraint('id') ) + op.create_index(op.f('ix_group_identifier'), 'group', ['identifier'], unique=False) + op.create_index(op.f('ix_group_name'), 'group', ['name'], unique=False) op.create_table('json_data', sa.Column('id', sa.Integer(), nullable=False), sa.Column('hash', sa.String(length=255), nullable=False), sa.Column('data', sa.JSON(), nullable=False), - sa.PrimaryKeyConstraint('id') + sa.PrimaryKeyConstraint('id'), + sa.UniqueConstraint('hash') ) - op.create_index(op.f('ix_json_data_hash'), 'json_data', ['hash'], unique=True) op.create_table('message_triggerable_process_model', sa.Column('id', sa.Integer(), nullable=False), sa.Column('message_name', sa.String(length=255), nullable=True), @@ -63,6 +66,7 @@ def upgrade(): sa.Column('created_at_in_seconds', sa.Integer(), nullable=True), sa.PrimaryKeyConstraint('id') ) + op.create_index(op.f('ix_message_triggerable_process_model_message_name'), 'message_triggerable_process_model', ['message_name'], unique=False) op.create_index(op.f('ix_message_triggerable_process_model_process_model_identifier'), 'message_triggerable_process_model', ['process_model_identifier'], unique=False) op.create_table('permission_target', sa.Column('id', sa.Integer(), nullable=False), @@ -86,14 +90,15 @@ def upgrade(): ) op.create_index(op.f('ix_spec_reference_cache_display_name'), 'spec_reference_cache', ['display_name'], unique=False) op.create_index(op.f('ix_spec_reference_cache_identifier'), 'spec_reference_cache', ['identifier'], unique=False) + op.create_index(op.f('ix_spec_reference_cache_process_model_id'), 'spec_reference_cache', ['process_model_id'], unique=False) op.create_index(op.f('ix_spec_reference_cache_type'), 'spec_reference_cache', ['type'], unique=False) op.create_table('user', sa.Column('id', sa.Integer(), nullable=False), sa.Column('username', sa.String(length=255), nullable=False), + sa.Column('email', sa.String(length=255), nullable=True), sa.Column('service', sa.String(length=255), nullable=False), sa.Column('service_id', sa.String(length=255), nullable=False), sa.Column('display_name', sa.String(length=255), nullable=True), - sa.Column('email', sa.String(length=255), nullable=True), sa.Column('tenant_specific_field_1', sa.String(length=255), nullable=True), sa.Column('tenant_specific_field_2', sa.String(length=255), nullable=True), sa.Column('tenant_specific_field_3', sa.String(length=255), nullable=True), @@ -103,6 +108,9 @@ def upgrade(): sa.UniqueConstraint('service', 'service_id', name='service_key'), sa.UniqueConstraint('username') ) + op.create_index(op.f('ix_user_email'), 'user', ['email'], unique=False) + op.create_index(op.f('ix_user_service'), 'user', ['service'], unique=False) + op.create_index(op.f('ix_user_service_id'), 'user', ['service_id'], unique=False) op.create_table('bpmn_process', sa.Column('id', sa.Integer(), nullable=False), sa.Column('guid', sa.String(length=36), nullable=True), @@ -114,10 +122,12 @@ def upgrade(): sa.Column('end_in_seconds', sa.DECIMAL(precision=17, scale=6), nullable=True), sa.ForeignKeyConstraint(['bpmn_process_definition_id'], ['bpmn_process_definition.id'], ), sa.ForeignKeyConstraint(['parent_process_id'], ['bpmn_process.id'], ), - sa.PrimaryKeyConstraint('id') + sa.PrimaryKeyConstraint('id'), + sa.UniqueConstraint('guid') ) - op.create_index(op.f('ix_bpmn_process_guid'), 'bpmn_process', ['guid'], unique=True) + op.create_index(op.f('ix_bpmn_process_bpmn_process_definition_id'), 'bpmn_process', ['bpmn_process_definition_id'], unique=False) op.create_index(op.f('ix_bpmn_process_json_data_hash'), 'bpmn_process', ['json_data_hash'], unique=False) + op.create_index(op.f('ix_bpmn_process_parent_process_id'), 'bpmn_process', ['parent_process_id'], unique=False) op.create_table('bpmn_process_definition_relationship', sa.Column('id', sa.Integer(), nullable=False), sa.Column('bpmn_process_definition_parent_id', sa.Integer(), nullable=False), @@ -127,6 +137,8 @@ def upgrade(): sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('bpmn_process_definition_parent_id', 'bpmn_process_definition_child_id', name='bpmn_process_definition_relationship_unique') ) + op.create_index(op.f('ix_bpmn_process_definition_relationship_bpmn_process_definition_parent_id'), 'bpmn_process_definition_relationship', ['bpmn_process_definition_parent_id'], unique=False) + op.create_index(op.f('ix_bpmn_process_definition_relationship_bpmn_process_definition_child_id'), 'bpmn_process_definition_relationship', ['bpmn_process_definition_child_id'], unique=False) op.create_table('principal', sa.Column('id', sa.Integer(), nullable=False), sa.Column('user_id', sa.Integer(), nullable=True), @@ -170,13 +182,14 @@ def upgrade(): sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('key') ) + op.create_index(op.f('ix_secret_user_id'), 'secret', ['user_id'], unique=False) op.create_table('task_definition', sa.Column('id', sa.Integer(), nullable=False), sa.Column('bpmn_process_definition_id', sa.Integer(), nullable=False), sa.Column('bpmn_identifier', sa.String(length=255), nullable=False), sa.Column('bpmn_name', sa.String(length=255), nullable=True), - sa.Column('properties_json', sa.JSON(), nullable=False), sa.Column('typename', sa.String(length=255), nullable=False), + sa.Column('properties_json', sa.JSON(), nullable=False), sa.Column('updated_at_in_seconds', sa.Integer(), nullable=True), sa.Column('created_at_in_seconds', sa.Integer(), nullable=True), sa.ForeignKeyConstraint(['bpmn_process_definition_id'], ['bpmn_process_definition.id'], ), @@ -185,6 +198,8 @@ def upgrade(): ) op.create_index(op.f('ix_task_definition_bpmn_identifier'), 'task_definition', ['bpmn_identifier'], unique=False) op.create_index(op.f('ix_task_definition_bpmn_name'), 'task_definition', ['bpmn_name'], unique=False) + op.create_index(op.f('ix_task_definition_bpmn_process_definition_id'), 'task_definition', ['bpmn_process_definition_id'], unique=False) + op.create_index(op.f('ix_task_definition_typename'), 'task_definition', ['typename'], unique=False) op.create_table('user_group_assignment', sa.Column('id', sa.Integer(), nullable=False), sa.Column('user_id', sa.Integer(), nullable=False), @@ -194,6 +209,8 @@ def upgrade(): sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('user_id', 'group_id', name='user_group_assignment_unique') ) + op.create_index(op.f('ix_user_group_assignment_group_id'), 'user_group_assignment', ['group_id'], unique=False) + op.create_index(op.f('ix_user_group_assignment_user_id'), 'user_group_assignment', ['user_id'], unique=False) op.create_table('user_group_assignment_waiting', sa.Column('id', sa.Integer(), nullable=False), sa.Column('username', sa.String(length=255), nullable=False), @@ -202,6 +219,7 @@ def upgrade(): sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('username', 'group_id', name='user_group_assignment_staged_unique') ) + op.create_index(op.f('ix_user_group_assignment_waiting_group_id'), 'user_group_assignment_waiting', ['group_id'], unique=False) op.create_table('permission_assignment', sa.Column('id', sa.Integer(), nullable=False), sa.Column('principal_id', sa.Integer(), nullable=False), @@ -213,6 +231,8 @@ def upgrade(): sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('principal_id', 'permission_target_id', 'permission', name='permission_assignment_uniq') ) + op.create_index(op.f('ix_permission_assignment_permission_target_id'), 'permission_assignment', ['permission_target_id'], unique=False) + op.create_index(op.f('ix_permission_assignment_principal_id'), 'permission_assignment', ['principal_id'], unique=False) op.create_table('process_instance', sa.Column('id', sa.Integer(), nullable=False), sa.Column('process_model_identifier', sa.String(length=255), nullable=False), @@ -221,7 +241,6 @@ def upgrade(): sa.Column('bpmn_process_definition_id', sa.Integer(), nullable=True), sa.Column('bpmn_process_id', sa.Integer(), nullable=True), sa.Column('spiff_serializer_version', sa.String(length=50), nullable=True), - sa.Column('bpmn_json', sa.JSON(), nullable=True), sa.Column('start_in_seconds', sa.Integer(), nullable=True), sa.Column('end_in_seconds', sa.Integer(), nullable=True), sa.Column('updated_at_in_seconds', sa.Integer(), nullable=True), @@ -235,8 +254,14 @@ def upgrade(): sa.ForeignKeyConstraint(['process_initiator_id'], ['user.id'], ), sa.PrimaryKeyConstraint('id') ) + op.create_index(op.f('ix_process_instance_bpmn_process_definition_id'), 'process_instance', ['bpmn_process_definition_id'], unique=False) + op.create_index(op.f('ix_process_instance_bpmn_process_id'), 'process_instance', ['bpmn_process_id'], unique=False) + op.create_index(op.f('ix_process_instance_end_in_seconds'), 'process_instance', ['end_in_seconds'], unique=False) + op.create_index(op.f('ix_process_instance_process_initiator_id'), 'process_instance', ['process_initiator_id'], unique=False) op.create_index(op.f('ix_process_instance_process_model_display_name'), 'process_instance', ['process_model_display_name'], unique=False) op.create_index(op.f('ix_process_instance_process_model_identifier'), 'process_instance', ['process_model_identifier'], unique=False) + op.create_index(op.f('ix_process_instance_start_in_seconds'), 'process_instance', ['start_in_seconds'], unique=False) + op.create_index(op.f('ix_process_instance_status'), 'process_instance', ['status'], unique=False) op.create_table('message_instance', sa.Column('id', sa.Integer(), nullable=False), sa.Column('process_instance_id', sa.Integer(), nullable=True), @@ -254,6 +279,9 @@ def upgrade(): sa.ForeignKeyConstraint(['user_id'], ['user.id'], ), sa.PrimaryKeyConstraint('id') ) + op.create_index(op.f('ix_message_instance_process_instance_id'), 'message_instance', ['process_instance_id'], unique=False) + op.create_index(op.f('ix_message_instance_status'), 'message_instance', ['status'], unique=False) + op.create_index(op.f('ix_message_instance_user_id'), 'message_instance', ['user_id'], unique=False) op.create_table('process_instance_event', sa.Column('id', sa.Integer(), nullable=False), sa.Column('task_guid', sa.String(length=36), nullable=True), @@ -266,6 +294,7 @@ def upgrade(): sa.PrimaryKeyConstraint('id') ) op.create_index(op.f('ix_process_instance_event_event_type'), 'process_instance_event', ['event_type'], unique=False) + op.create_index(op.f('ix_process_instance_event_process_instance_id'), 'process_instance_event', ['process_instance_id'], unique=False) op.create_index(op.f('ix_process_instance_event_task_guid'), 'process_instance_event', ['task_guid'], unique=False) op.create_index(op.f('ix_process_instance_event_timestamp'), 'process_instance_event', ['timestamp'], unique=False) op.create_index(op.f('ix_process_instance_event_user_id'), 'process_instance_event', ['user_id'], unique=False) @@ -284,6 +313,7 @@ def upgrade(): sa.PrimaryKeyConstraint('id') ) op.create_index(op.f('ix_process_instance_file_data_digest'), 'process_instance_file_data', ['digest'], unique=False) + op.create_index(op.f('ix_process_instance_file_data_process_instance_id'), 'process_instance_file_data', ['process_instance_id'], unique=False) op.create_table('process_instance_metadata', sa.Column('id', sa.Integer(), nullable=False), sa.Column('process_instance_id', sa.Integer(), nullable=False), @@ -296,6 +326,7 @@ def upgrade(): sa.UniqueConstraint('process_instance_id', 'key', name='process_instance_metadata_unique') ) op.create_index(op.f('ix_process_instance_metadata_key'), 'process_instance_metadata', ['key'], unique=False) + op.create_index(op.f('ix_process_instance_metadata_process_instance_id'), 'process_instance_metadata', ['process_instance_id'], unique=False) op.create_table('process_instance_queue', sa.Column('id', sa.Integer(), nullable=False), sa.Column('process_instance_id', sa.Integer(), nullable=False), @@ -307,11 +338,11 @@ def upgrade(): sa.Column('updated_at_in_seconds', sa.Integer(), nullable=True), sa.Column('created_at_in_seconds', sa.Integer(), nullable=True), sa.ForeignKeyConstraint(['process_instance_id'], ['process_instance.id'], ), - sa.PrimaryKeyConstraint('id') + sa.PrimaryKeyConstraint('id'), + sa.UniqueConstraint('process_instance_id') ) op.create_index(op.f('ix_process_instance_queue_locked_at_in_seconds'), 'process_instance_queue', ['locked_at_in_seconds'], unique=False) op.create_index(op.f('ix_process_instance_queue_locked_by'), 'process_instance_queue', ['locked_by'], unique=False) - op.create_index(op.f('ix_process_instance_queue_process_instance_id'), 'process_instance_queue', ['process_instance_id'], unique=True) op.create_index(op.f('ix_process_instance_queue_status'), 'process_instance_queue', ['status'], unique=False) op.create_table('spiff_step_details', sa.Column('id', sa.Integer(), nullable=False), @@ -328,6 +359,7 @@ def upgrade(): sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('process_instance_id', 'spiff_step', name='process_instance_id_spiff_step') ) + op.create_index(op.f('ix_spiff_step_details_process_instance_id'), 'spiff_step_details', ['process_instance_id'], unique=False) op.create_table('task', sa.Column('id', sa.Integer(), nullable=False), sa.Column('guid', sa.String(length=36), nullable=False), @@ -343,11 +375,15 @@ def upgrade(): sa.ForeignKeyConstraint(['bpmn_process_id'], ['bpmn_process.id'], ), sa.ForeignKeyConstraint(['process_instance_id'], ['process_instance.id'], ), sa.ForeignKeyConstraint(['task_definition_id'], ['task_definition.id'], ), - sa.PrimaryKeyConstraint('id') + sa.PrimaryKeyConstraint('id'), + sa.UniqueConstraint('guid') ) - op.create_index(op.f('ix_task_guid'), 'task', ['guid'], unique=True) + op.create_index(op.f('ix_task_bpmn_process_id'), 'task', ['bpmn_process_id'], unique=False) op.create_index(op.f('ix_task_json_data_hash'), 'task', ['json_data_hash'], unique=False) + op.create_index(op.f('ix_task_process_instance_id'), 'task', ['process_instance_id'], unique=False) op.create_index(op.f('ix_task_python_env_data_hash'), 'task', ['python_env_data_hash'], unique=False) + op.create_index(op.f('ix_task_state'), 'task', ['state'], unique=False) + op.create_index(op.f('ix_task_task_definition_id'), 'task', ['task_definition_id'], unique=False) op.create_table('human_task', sa.Column('id', sa.Integer(), nullable=False), sa.Column('process_instance_id', sa.Integer(), nullable=False), @@ -374,7 +410,12 @@ def upgrade(): sa.ForeignKeyConstraint(['task_model_id'], ['task.id'], ), sa.PrimaryKeyConstraint('id') ) + op.create_index(op.f('ix_human_task_actual_owner_id'), 'human_task', ['actual_owner_id'], unique=False) op.create_index(op.f('ix_human_task_completed'), 'human_task', ['completed'], unique=False) + op.create_index(op.f('ix_human_task_completed_by_user_id'), 'human_task', ['completed_by_user_id'], unique=False) + op.create_index(op.f('ix_human_task_lane_assignment_id'), 'human_task', ['lane_assignment_id'], unique=False) + op.create_index(op.f('ix_human_task_process_instance_id'), 'human_task', ['process_instance_id'], unique=False) + op.create_index(op.f('ix_human_task_task_model_id'), 'human_task', ['task_model_id'], unique=False) op.create_table('message_instance_correlation_rule', sa.Column('id', sa.Integer(), nullable=False), sa.Column('message_instance_id', sa.Integer(), nullable=False), @@ -387,6 +428,7 @@ def upgrade(): sa.UniqueConstraint('message_instance_id', 'name', name='message_instance_id_name_unique') ) op.create_index(op.f('ix_message_instance_correlation_rule_message_instance_id'), 'message_instance_correlation_rule', ['message_instance_id'], unique=False) + op.create_index(op.f('ix_message_instance_correlation_rule_name'), 'message_instance_correlation_rule', ['name'], unique=False) op.create_table('human_task_user', sa.Column('id', sa.Integer(), nullable=False), sa.Column('human_task_id', sa.Integer(), nullable=False), @@ -406,62 +448,101 @@ def downgrade(): op.drop_index(op.f('ix_human_task_user_user_id'), table_name='human_task_user') op.drop_index(op.f('ix_human_task_user_human_task_id'), table_name='human_task_user') op.drop_table('human_task_user') + op.drop_index(op.f('ix_message_instance_correlation_rule_name'), table_name='message_instance_correlation_rule') op.drop_index(op.f('ix_message_instance_correlation_rule_message_instance_id'), table_name='message_instance_correlation_rule') op.drop_table('message_instance_correlation_rule') + op.drop_index(op.f('ix_human_task_task_model_id'), table_name='human_task') + op.drop_index(op.f('ix_human_task_process_instance_id'), table_name='human_task') + op.drop_index(op.f('ix_human_task_lane_assignment_id'), table_name='human_task') + op.drop_index(op.f('ix_human_task_completed_by_user_id'), table_name='human_task') op.drop_index(op.f('ix_human_task_completed'), table_name='human_task') + op.drop_index(op.f('ix_human_task_actual_owner_id'), table_name='human_task') op.drop_table('human_task') + op.drop_index(op.f('ix_task_task_definition_id'), table_name='task') + op.drop_index(op.f('ix_task_state'), table_name='task') op.drop_index(op.f('ix_task_python_env_data_hash'), table_name='task') + op.drop_index(op.f('ix_task_process_instance_id'), table_name='task') op.drop_index(op.f('ix_task_json_data_hash'), table_name='task') - op.drop_index(op.f('ix_task_guid'), table_name='task') + op.drop_index(op.f('ix_task_bpmn_process_id'), table_name='task') op.drop_table('task') + op.drop_index(op.f('ix_spiff_step_details_process_instance_id'), table_name='spiff_step_details') op.drop_table('spiff_step_details') op.drop_index(op.f('ix_process_instance_queue_status'), table_name='process_instance_queue') - op.drop_index(op.f('ix_process_instance_queue_process_instance_id'), table_name='process_instance_queue') op.drop_index(op.f('ix_process_instance_queue_locked_by'), table_name='process_instance_queue') op.drop_index(op.f('ix_process_instance_queue_locked_at_in_seconds'), table_name='process_instance_queue') op.drop_table('process_instance_queue') + op.drop_index(op.f('ix_process_instance_metadata_process_instance_id'), table_name='process_instance_metadata') op.drop_index(op.f('ix_process_instance_metadata_key'), table_name='process_instance_metadata') op.drop_table('process_instance_metadata') + op.drop_index(op.f('ix_process_instance_file_data_process_instance_id'), table_name='process_instance_file_data') op.drop_index(op.f('ix_process_instance_file_data_digest'), table_name='process_instance_file_data') op.drop_table('process_instance_file_data') op.drop_index(op.f('ix_process_instance_event_user_id'), table_name='process_instance_event') op.drop_index(op.f('ix_process_instance_event_timestamp'), table_name='process_instance_event') op.drop_index(op.f('ix_process_instance_event_task_guid'), table_name='process_instance_event') + op.drop_index(op.f('ix_process_instance_event_process_instance_id'), table_name='process_instance_event') op.drop_index(op.f('ix_process_instance_event_event_type'), table_name='process_instance_event') op.drop_table('process_instance_event') + op.drop_index(op.f('ix_message_instance_user_id'), table_name='message_instance') + op.drop_index(op.f('ix_message_instance_status'), table_name='message_instance') + op.drop_index(op.f('ix_message_instance_process_instance_id'), table_name='message_instance') op.drop_table('message_instance') + op.drop_index(op.f('ix_process_instance_status'), table_name='process_instance') + op.drop_index(op.f('ix_process_instance_start_in_seconds'), table_name='process_instance') op.drop_index(op.f('ix_process_instance_process_model_identifier'), table_name='process_instance') op.drop_index(op.f('ix_process_instance_process_model_display_name'), table_name='process_instance') + op.drop_index(op.f('ix_process_instance_process_initiator_id'), table_name='process_instance') + op.drop_index(op.f('ix_process_instance_end_in_seconds'), table_name='process_instance') + op.drop_index(op.f('ix_process_instance_bpmn_process_id'), table_name='process_instance') + op.drop_index(op.f('ix_process_instance_bpmn_process_definition_id'), table_name='process_instance') op.drop_table('process_instance') + op.drop_index(op.f('ix_permission_assignment_principal_id'), table_name='permission_assignment') + op.drop_index(op.f('ix_permission_assignment_permission_target_id'), table_name='permission_assignment') op.drop_table('permission_assignment') + op.drop_index(op.f('ix_user_group_assignment_waiting_group_id'), table_name='user_group_assignment_waiting') op.drop_table('user_group_assignment_waiting') + op.drop_index(op.f('ix_user_group_assignment_user_id'), table_name='user_group_assignment') + op.drop_index(op.f('ix_user_group_assignment_group_id'), table_name='user_group_assignment') op.drop_table('user_group_assignment') + op.drop_index(op.f('ix_task_definition_typename'), table_name='task_definition') + op.drop_index(op.f('ix_task_definition_bpmn_process_definition_id'), table_name='task_definition') op.drop_index(op.f('ix_task_definition_bpmn_name'), table_name='task_definition') op.drop_index(op.f('ix_task_definition_bpmn_identifier'), table_name='task_definition') op.drop_table('task_definition') + op.drop_index(op.f('ix_secret_user_id'), table_name='secret') op.drop_table('secret') op.drop_table('refresh_token') op.drop_index(op.f('ix_process_instance_report_identifier'), table_name='process_instance_report') op.drop_index(op.f('ix_process_instance_report_created_by_id'), table_name='process_instance_report') op.drop_table('process_instance_report') op.drop_table('principal') + op.drop_index(op.f('ix_bpmn_process_definition_relationship_bpmn_process_definition_child_id'), table_name='bpmn_process_definition_relationship') + op.drop_index(op.f('ix_bpmn_process_definition_relationship_bpmn_process_definition_parent_id'), table_name='bpmn_process_definition_relationship') op.drop_table('bpmn_process_definition_relationship') + op.drop_index(op.f('ix_bpmn_process_parent_process_id'), table_name='bpmn_process') op.drop_index(op.f('ix_bpmn_process_json_data_hash'), table_name='bpmn_process') - op.drop_index(op.f('ix_bpmn_process_guid'), table_name='bpmn_process') + op.drop_index(op.f('ix_bpmn_process_bpmn_process_definition_id'), table_name='bpmn_process') op.drop_table('bpmn_process') + op.drop_index(op.f('ix_user_service_id'), table_name='user') + op.drop_index(op.f('ix_user_service'), table_name='user') + op.drop_index(op.f('ix_user_email'), table_name='user') op.drop_table('user') op.drop_index(op.f('ix_spec_reference_cache_type'), table_name='spec_reference_cache') + op.drop_index(op.f('ix_spec_reference_cache_process_model_id'), table_name='spec_reference_cache') op.drop_index(op.f('ix_spec_reference_cache_identifier'), table_name='spec_reference_cache') op.drop_index(op.f('ix_spec_reference_cache_display_name'), table_name='spec_reference_cache') op.drop_table('spec_reference_cache') op.drop_table('permission_target') op.drop_index(op.f('ix_message_triggerable_process_model_process_model_identifier'), table_name='message_triggerable_process_model') + op.drop_index(op.f('ix_message_triggerable_process_model_message_name'), table_name='message_triggerable_process_model') op.drop_table('message_triggerable_process_model') - op.drop_index(op.f('ix_json_data_hash'), table_name='json_data') op.drop_table('json_data') + op.drop_index(op.f('ix_group_name'), table_name='group') + op.drop_index(op.f('ix_group_identifier'), table_name='group') op.drop_table('group') + op.drop_index(op.f('ix_correlation_property_cache_name'), table_name='correlation_property_cache') + op.drop_index(op.f('ix_correlation_property_cache_message_name'), table_name='correlation_property_cache') op.drop_table('correlation_property_cache') - op.drop_index(op.f('ix_bpmn_process_definition_hash'), table_name='bpmn_process_definition') op.drop_index(op.f('ix_bpmn_process_definition_bpmn_name'), table_name='bpmn_process_definition') op.drop_index(op.f('ix_bpmn_process_definition_bpmn_identifier'), table_name='bpmn_process_definition') op.drop_table('bpmn_process_definition') diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/models/bpmn_process.py b/spiffworkflow-backend/src/spiffworkflow_backend/models/bpmn_process.py index 3d6a74da..22bdfa70 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/models/bpmn_process.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/models/bpmn_process.py @@ -17,7 +17,7 @@ from spiffworkflow_backend.models.db import SpiffworkflowBaseDBModel class BpmnProcessModel(SpiffworkflowBaseDBModel): __tablename__ = "bpmn_process" id: int = db.Column(db.Integer, primary_key=True) - guid: str | None = db.Column(db.String(36), nullable=True, unique=True, index=True) + guid: str | None = db.Column(db.String(36), nullable=True, unique=True) bpmn_process_definition_id: int = db.Column( ForeignKey(BpmnProcessDefinitionModel.id), nullable=False, index=True # type: ignore @@ -31,9 +31,6 @@ class BpmnProcessModel(SpiffworkflowBaseDBModel): tasks = relationship("TaskModel", back_populates="bpmn_process", cascade="delete") # type: ignore - # subprocess or top_level_process - # process_type: str = db.Column(db.String(30), nullable=False) - # FIXME: find out how to set this but it'd be cool start_in_seconds: float = db.Column(db.DECIMAL(17, 6)) end_in_seconds: float | None = db.Column(db.DECIMAL(17, 6)) diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/models/bpmn_process_definition.py b/spiffworkflow-backend/src/spiffworkflow_backend/models/bpmn_process_definition.py index 75901ae2..7f60d751 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/models/bpmn_process_definition.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/models/bpmn_process_definition.py @@ -18,18 +18,13 @@ class BpmnProcessDefinitionModel(SpiffworkflowBaseDBModel): # note that a call activity is its own row in this table, with its own hash, # and therefore it only gets stored once per version, and can be reused # by multiple calling processes. - hash: str = db.Column(db.String(255), nullable=False, index=True, unique=True) + hash: str = db.Column(db.String(255), nullable=False, unique=True) bpmn_identifier: str = db.Column(db.String(255), nullable=False, index=True) bpmn_name: str = db.Column(db.String(255), nullable=True, index=True) properties_json: dict = db.Column(db.JSON, nullable=False) - # process or subprocess - # FIXME: will probably ignore for now since we do not strictly need it - # make this nullable false and index it once we actually start using it - type: str = db.Column(db.String(32), nullable=True) - # TODO: remove these from process_instance bpmn_version_control_type: str = db.Column(db.String(50)) bpmn_version_control_identifier: str = db.Column(db.String(255)) diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/models/correlation_property_cache.py b/spiffworkflow-backend/src/spiffworkflow_backend/models/correlation_property_cache.py index dd311b93..5a371dee 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/models/correlation_property_cache.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/models/correlation_property_cache.py @@ -18,7 +18,7 @@ class CorrelationPropertyCache(SpiffworkflowBaseDBModel): __tablename__ = "correlation_property_cache" id = db.Column(db.Integer, primary_key=True) - name: str = db.Column(db.String(50), nullable=False) - message_name: str = db.Column(db.String(50), nullable=False) + name: str = db.Column(db.String(50), nullable=False, index=True) + message_name: str = db.Column(db.String(50), nullable=False, index=True) process_model_id: str = db.Column(db.String(255), nullable=False) retrieval_expression: str = db.Column(db.String(255)) diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/models/group.py b/spiffworkflow-backend/src/spiffworkflow_backend/models/group.py index 8cd04681..18ae2020 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/models/group.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/models/group.py @@ -26,8 +26,8 @@ class GroupModel(SpiffworkflowBaseDBModel): __table_args__ = {"extend_existing": True} id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(255)) - identifier = db.Column(db.String(255)) + name = db.Column(db.String(255), index=True) + identifier = db.Column(db.String(255), index=True) user_group_assignments = relationship("UserGroupAssignmentModel", cascade="delete") user_group_assignments_waiting = relationship("UserGroupAssignmentWaitingModel", cascade="delete") # type: ignore diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/models/human_task.py b/spiffworkflow-backend/src/spiffworkflow_backend/models/human_task.py index 4e0d2ffc..6a26e5c5 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/models/human_task.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/models/human_task.py @@ -29,7 +29,9 @@ class HumanTaskModel(SpiffworkflowBaseDBModel): __tablename__ = "human_task" id: int = db.Column(db.Integer, primary_key=True) - process_instance_id: int = db.Column(ForeignKey(ProcessInstanceModel.id), nullable=False, index=True) # type: ignore + process_instance_id: int = db.Column( + ForeignKey(ProcessInstanceModel.id), nullable=False, index=True # type: ignore + ) lane_assignment_id: int | None = db.Column(ForeignKey(GroupModel.id), index=True) completed_by_user_id: int = db.Column(ForeignKey(UserModel.id), nullable=True, index=True) # type: ignore diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/models/json_data.py b/spiffworkflow-backend/src/spiffworkflow_backend/models/json_data.py index 3253997a..3c0aed85 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/models/json_data.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/models/json_data.py @@ -29,7 +29,7 @@ class JsonDataModel(SpiffworkflowBaseDBModel): id: int = db.Column(db.Integer, primary_key=True) # this is a sha256 hash of spec and serializer_version - hash: str = db.Column(db.String(255), nullable=False, index=True, unique=True) + hash: str = db.Column(db.String(255), nullable=False, unique=True) data: dict = db.Column(db.JSON, nullable=False) @classmethod diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/models/message_instance.py b/spiffworkflow-backend/src/spiffworkflow_backend/models/message_instance.py index 3a4735ac..29c3ff11 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/models/message_instance.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/models/message_instance.py @@ -54,7 +54,7 @@ class MessageInstanceModel(SpiffworkflowBaseDBModel): payload: dict = db.Column(db.JSON) # The correlation keys of the process at the time the message was created. correlation_keys: dict = db.Column(db.JSON) - status: str = db.Column(db.String(20), nullable=False, default="ready") + status: str = db.Column(db.String(20), nullable=False, default="ready", index=True) user_id: int = db.Column(ForeignKey(UserModel.id), nullable=True, index=True) # type: ignore user = relationship("UserModel") counterpart_id: int = db.Column( diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/models/message_triggerable_process_model.py b/spiffworkflow-backend/src/spiffworkflow_backend/models/message_triggerable_process_model.py index 24a66f3a..bf79e09b 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/models/message_triggerable_process_model.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/models/message_triggerable_process_model.py @@ -9,7 +9,7 @@ class MessageTriggerableProcessModel(SpiffworkflowBaseDBModel): __tablename__ = "message_triggerable_process_model" id = db.Column(db.Integer, primary_key=True) - message_name: str = db.Column(db.String(255)) + message_name: str = db.Column(db.String(255), index=True) process_model_identifier: str = db.Column(db.String(50), nullable=False, index=True) updated_at_in_seconds: int = db.Column(db.Integer) created_at_in_seconds: int = db.Column(db.Integer) diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/models/process_instance.py b/spiffworkflow-backend/src/spiffworkflow_backend/models/process_instance.py index e312d2cd..f9824f02 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/models/process_instance.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/models/process_instance.py @@ -10,7 +10,6 @@ from marshmallow import Schema from marshmallow_enum import EnumField # type: ignore from SpiffWorkflow.util.deep_merge import DeepMerge # type: ignore from sqlalchemy import ForeignKey -from sqlalchemy.orm import deferred from sqlalchemy.orm import relationship from sqlalchemy.orm import validates @@ -89,12 +88,11 @@ class ProcessInstanceModel(SpiffworkflowBaseDBModel): cascade="delete", ) # type: ignore - bpmn_json: str | None = deferred(db.Column(db.JSON)) # type: ignore start_in_seconds: int | None = db.Column(db.Integer, index=True) - end_in_seconds: int | None = db.Column(db.Integer) + end_in_seconds: int | None = db.Column(db.Integer, index=True) updated_at_in_seconds: int = db.Column(db.Integer) created_at_in_seconds: int = db.Column(db.Integer) - status: str = db.Column(db.String(50)) + status: str = db.Column(db.String(50), index=True) bpmn_version_control_type: str = db.Column(db.String(50)) bpmn_version_control_identifier: str = db.Column(db.String(255)) diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/models/process_instance_file_data.py b/spiffworkflow-backend/src/spiffworkflow_backend/models/process_instance_file_data.py index 08cc4048..83fb0067 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/models/process_instance_file_data.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/models/process_instance_file_data.py @@ -17,7 +17,9 @@ class ProcessInstanceFileDataModel(SpiffworkflowBaseDBModel): __tablename__ = "process_instance_file_data" id: int = db.Column(db.Integer, primary_key=True) - process_instance_id: int = db.Column(ForeignKey(ProcessInstanceModel.id), nullable=False, index=True) # type: ignore + process_instance_id: int = db.Column( + ForeignKey(ProcessInstanceModel.id), nullable=False, index=True # type: ignore + ) identifier: str = db.Column(db.String(255), nullable=False) list_index: Optional[int] = db.Column(db.Integer, nullable=True) mimetype: str = db.Column(db.String(255), nullable=False) diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/models/process_instance_metadata.py b/spiffworkflow-backend/src/spiffworkflow_backend/models/process_instance_metadata.py index 1bd3c436..4e00a6ca 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/models/process_instance_metadata.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/models/process_instance_metadata.py @@ -16,7 +16,9 @@ class ProcessInstanceMetadataModel(SpiffworkflowBaseDBModel): __table_args__ = (db.UniqueConstraint("process_instance_id", "key", name="process_instance_metadata_unique"),) id: int = db.Column(db.Integer, primary_key=True) - process_instance_id: int = db.Column(ForeignKey(ProcessInstanceModel.id), nullable=False, index=True) # type: ignore + process_instance_id: int = db.Column( + ForeignKey(ProcessInstanceModel.id), nullable=False, index=True # type: ignore + ) key: str = db.Column(db.String(255), nullable=False, index=True) value: str = db.Column(db.String(255), nullable=False) diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/models/process_instance_queue.py b/spiffworkflow-backend/src/spiffworkflow_backend/models/process_instance_queue.py index 9bf63c00..76ad038a 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/models/process_instance_queue.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/models/process_instance_queue.py @@ -17,7 +17,7 @@ class ProcessInstanceQueueModel(SpiffworkflowBaseDBModel): id: int = db.Column(db.Integer, primary_key=True) process_instance_id: int = db.Column( - ForeignKey(ProcessInstanceModel.id), index=True, unique=True, nullable=False, index=True # type: ignore + ForeignKey(ProcessInstanceModel.id), unique=True, nullable=False # type: ignore ) run_at_in_seconds: int = db.Column(db.Integer) priority: int = db.Column(db.Integer) diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/models/spec_reference.py b/spiffworkflow-backend/src/spiffworkflow_backend/models/spec_reference.py index cfc78686..0aae53f7 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/models/spec_reference.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/models/spec_reference.py @@ -45,7 +45,7 @@ class SpecReferenceCache(SpiffworkflowBaseDBModel): id = db.Column(db.Integer, primary_key=True) identifier = db.Column(db.String(255), index=True) display_name = db.Column(db.String(255), index=True) - process_model_id = db.Column(db.String(255)) + process_model_id = db.Column(db.String(255), index=True) type = db.Column(db.String(255), index=True) # either 'process' or 'decision' file_name = db.Column(db.String(255)) relative_path = db.Column(db.String(255)) diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/models/spiff_step_details.py b/spiffworkflow-backend/src/spiffworkflow_backend/models/spiff_step_details.py index 2568d742..58d34095 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/models/spiff_step_details.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/models/spiff_step_details.py @@ -19,7 +19,9 @@ class SpiffStepDetailsModel(SpiffworkflowBaseDBModel): __table_args__ = (UniqueConstraint("process_instance_id", "spiff_step", name="process_instance_id_spiff_step"),) id: int = db.Column(db.Integer, primary_key=True) - process_instance_id: int = db.Column(ForeignKey(ProcessInstanceModel.id), nullable=False, index=True) # type: ignore + process_instance_id: int = db.Column( + ForeignKey(ProcessInstanceModel.id), nullable=False, index=True # type: ignore + ) spiff_step: int = db.Column(db.Integer, nullable=False) task_json: dict = deferred(db.Column(db.JSON, nullable=False)) # type: ignore task_id: str = db.Column(db.String(50), nullable=False) diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/models/task.py b/spiffworkflow-backend/src/spiffworkflow_backend/models/task.py index cbd1ec65..a7812ba0 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/models/task.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/models/task.py @@ -48,7 +48,7 @@ class MultiInstanceType(enum.Enum): class TaskModel(SpiffworkflowBaseDBModel): __tablename__ = "task" id: int = db.Column(db.Integer, primary_key=True) - guid: str = db.Column(db.String(36), nullable=False, unique=True, index=True) + guid: str = db.Column(db.String(36), nullable=False, unique=True) bpmn_process_id: int = db.Column(ForeignKey(BpmnProcessModel.id), nullable=False, index=True) # type: ignore bpmn_process = relationship(BpmnProcessModel, back_populates="tasks") process_instance_id: int = db.Column(ForeignKey("process_instance.id"), nullable=False, index=True) @@ -57,7 +57,7 @@ class TaskModel(SpiffworkflowBaseDBModel): task_definition_id: int = db.Column(ForeignKey(TaskDefinitionModel.id), nullable=False, index=True) # type: ignore task_definition = relationship("TaskDefinitionModel") - state: str = db.Column(db.String(10), nullable=False) + state: str = db.Column(db.String(10), nullable=False, index=True) properties_json: dict = db.Column(db.JSON, nullable=False) json_data_hash: str = db.Column(db.String(255), nullable=False, index=True)