feat(core): add alembic migration for soft-delete columns on core tables
This commit is contained in:
@@ -0,0 +1,47 @@
|
|||||||
|
"""Add deleted_at column to core tables that don't have it yet.
|
||||||
|
|
||||||
|
Revision ID: 0012_soft_delete
|
||||||
|
Revises: 0011_attachments
|
||||||
|
Create Date: 2026-07-04
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from typing import Sequence, Union
|
||||||
|
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
|
||||||
|
revision: str = "0012_soft_delete"
|
||||||
|
down_revision: Union[str, None] = "0011_attachments"
|
||||||
|
branch_labels: Union[str, Sequence[str], None] = None
|
||||||
|
depends_on: Union[str, Sequence[str], None] = None
|
||||||
|
|
||||||
|
# Core tables that need deleted_at added
|
||||||
|
# Excludes: audit_log (immutable), deletion_log (already has it),
|
||||||
|
# tenants (top-level), user_tenants (join table with cascade delete)
|
||||||
|
TABLES_NEEDING_SOFT_DELETE = [
|
||||||
|
"users",
|
||||||
|
"roles",
|
||||||
|
"sessions",
|
||||||
|
"notifications",
|
||||||
|
"ai_conversations",
|
||||||
|
"ai_messages",
|
||||||
|
"workflows",
|
||||||
|
"workflow_instances",
|
||||||
|
"workflow_step_history",
|
||||||
|
"company_contacts",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade() -> None:
|
||||||
|
for table_name in TABLES_NEEDING_SOFT_DELETE:
|
||||||
|
op.add_column(
|
||||||
|
table_name,
|
||||||
|
sa.Column("deleted_at", sa.DateTime(timezone=True), nullable=True),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade() -> None:
|
||||||
|
for table_name in reversed(TABLES_NEEDING_SOFT_DELETE):
|
||||||
|
op.drop_column(table_name, "deleted_at")
|
||||||
Reference in New Issue
Block a user