Fix 500 on POST /api/projects/:id/members — add project_invite types to notification CHECK constraint
The invite_members handler called create_notification with type="project_invite", which is not in the ck_notifications_type CHECK constraint. The db.flush() inside the handler flushed both the ProjectMember and Notification INSERTs atomically, causing a CheckViolationError → 500. Added "project_invite", "project_invite_accepted", "project_invite_rejected" to the model tuple and migration 060 drops/recreates the constraint to include them. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
f0850ad3bf
commit
05f5b49e26
@ -0,0 +1,35 @@
|
|||||||
|
"""Expand notification type CHECK for project invite types
|
||||||
|
|
||||||
|
Revision ID: 060
|
||||||
|
Revises: 059
|
||||||
|
"""
|
||||||
|
from alembic import op
|
||||||
|
|
||||||
|
revision = "060"
|
||||||
|
down_revision = "059"
|
||||||
|
branch_labels = None
|
||||||
|
depends_on = None
|
||||||
|
|
||||||
|
_OLD_TYPES = (
|
||||||
|
"connection_request", "connection_accepted", "connection_rejected",
|
||||||
|
"calendar_invite", "calendar_invite_accepted", "calendar_invite_rejected",
|
||||||
|
"event_invite", "event_invite_response",
|
||||||
|
"info", "warning", "reminder", "system",
|
||||||
|
)
|
||||||
|
_NEW_TYPES = _OLD_TYPES + (
|
||||||
|
"project_invite", "project_invite_accepted", "project_invite_rejected",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def _check_sql(types: tuple) -> str:
|
||||||
|
return f"type IN ({', '.join(repr(t) for t in types)})"
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade() -> None:
|
||||||
|
op.drop_constraint("ck_notifications_type", "notifications", type_="check")
|
||||||
|
op.create_check_constraint("ck_notifications_type", "notifications", _check_sql(_NEW_TYPES))
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade() -> None:
|
||||||
|
op.drop_constraint("ck_notifications_type", "notifications", type_="check")
|
||||||
|
op.create_check_constraint("ck_notifications_type", "notifications", _check_sql(_OLD_TYPES))
|
||||||
@ -9,6 +9,7 @@ _NOTIFICATION_TYPES = (
|
|||||||
"connection_request", "connection_accepted", "connection_rejected",
|
"connection_request", "connection_accepted", "connection_rejected",
|
||||||
"calendar_invite", "calendar_invite_accepted", "calendar_invite_rejected",
|
"calendar_invite", "calendar_invite_accepted", "calendar_invite_rejected",
|
||||||
"event_invite", "event_invite_response",
|
"event_invite", "event_invite_response",
|
||||||
|
"project_invite", "project_invite_accepted", "project_invite_rejected",
|
||||||
"info", "warning", "reminder", "system",
|
"info", "warning", "reminder", "system",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user