Skip to content

Commit

Permalink
fix(api): add parent_id to tasks unique constraint (#122)
Browse files Browse the repository at this point in the history
Closes #118
  • Loading branch information
mawandm authored Jun 14, 2024
1 parent 870e58e commit 26eed90
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
"""add parent_id to task unique constraint
Revision ID: cbad6afbe13d
Revises: 50bebf15de30
Create Date: 2024-06-13 23:59:45.211996
"""

from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = "cbad6afbe13d"
down_revision: Union[str, None] = "50bebf15de30"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.drop_constraint("uq_task_type_schedule", "task", type_="unique")
op.create_unique_constraint(
"uq_task_parent_id_type_schedule", "task", ["parent_id", "type", "schedule"]
)
# ### end Alembic commands ###


def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.drop_constraint("uq_task_parent_id_type_schedule", "task", type_="unique")
op.create_unique_constraint("uq_task_type_schedule", "task", ["type", "schedule"])
# ### end Alembic commands ###
4 changes: 3 additions & 1 deletion nesis/api/core/models/entities.py
Original file line number Diff line number Diff line change
Expand Up @@ -394,7 +394,9 @@ class Task(Base):
update_date = Column(DateTime, default=dt.datetime.utcnow, nullable=False)

__table_args__ = (
UniqueConstraint("type", "schedule", name="uq_task_type_schedule"),
UniqueConstraint(
"parent_id", "type", "schedule", name="uq_task_parent_id_type_schedule"
),
Index("idx_task_type", "type"),
Index("idx_task_parent", "parent_id"),
)
Expand Down
2 changes: 1 addition & 1 deletion nesis/api/core/services/task_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ def create(self, **kwargs):
error_str = str(exc).lower()

if ("unique constraint" in error_str) and (
"uq_task_type_schedule" in error_str
"uq_task_parent_id_type_schedule" in error_str
):
# valid failure
raise ConflictException("Task already scheduled on this type")
Expand Down

0 comments on commit 26eed90

Please sign in to comment.