added uniqueness constraint to human task so it cannot have multiple human tasks for a process instance and task id w/ burnettk (#396)

Co-authored-by: jasquat <jasquat@users.noreply.github.com>
This commit is contained in:
jasquat 2023-07-17 12:44:32 -04:00 committed by GitHub
parent 9a1c23f22b
commit 9b199cad71
2 changed files with 40 additions and 0 deletions

View File

@ -0,0 +1,32 @@
"""empty message
Revision ID: 56e17aab85ca
Revises: 64adf34a98db
Create Date: 2023-07-14 11:54:20.187703
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '56e17aab85ca'
down_revision = '64adf34a98db'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('human_task', schema=None) as batch_op:
batch_op.create_unique_constraint('process_instance_task_unique', ['process_instance_id', 'task_id'])
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('human_task', schema=None) as batch_op:
batch_op.drop_constraint('process_instance_task_unique', type_='unique')
# ### end Alembic commands ###

View File

@ -23,6 +23,14 @@ if TYPE_CHECKING:
class HumanTaskModel(SpiffworkflowBaseDBModel):
__tablename__ = "human_task"
__table_args__ = (
db.UniqueConstraint(
"process_instance_id",
"task_id",
name="process_instance_task_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