diff --git a/spiffworkflow-backend/migrations/versions/56e17aab85ca_.py b/spiffworkflow-backend/migrations/versions/56e17aab85ca_.py new file mode 100644 index 000000000..79a029f7e --- /dev/null +++ b/spiffworkflow-backend/migrations/versions/56e17aab85ca_.py @@ -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 ### diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/models/human_task.py b/spiffworkflow-backend/src/spiffworkflow_backend/models/human_task.py index e2d017a4f..4aa835cef 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/models/human_task.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/models/human_task.py @@ -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