42 lines
1.1 KiB
Python
42 lines
1.1 KiB
Python
|
|
"""Migrate contact_folder_permissions to universal entity_permissions table.
|
||
|
|
|
||
|
|
Revision ID: 0051
|
||
|
|
Revises: 0050
|
||
|
|
Create Date: 2026-07-29
|
||
|
|
"""
|
||
|
|
|
||
|
|
from alembic import op
|
||
|
|
import sqlalchemy as sa
|
||
|
|
from sqlalchemy.dialects.postgresql import UUID as PGUUID
|
||
|
|
|
||
|
|
revision = "0051"
|
||
|
|
down_revision = "0050"
|
||
|
|
branch_labels = None
|
||
|
|
depends_on = None
|
||
|
|
|
||
|
|
|
||
|
|
def upgrade() -> None:
|
||
|
|
# Migrate existing contact_folder_permissions to entity_permissions
|
||
|
|
op.execute("""
|
||
|
|
INSERT INTO entity_permissions (id, entity_type, entity_id, principal_type, principal_id, permission_level, tenant_id, created_at, updated_at)
|
||
|
|
SELECT
|
||
|
|
gen_random_uuid(),
|
||
|
|
'contact_folder',
|
||
|
|
folder_id,
|
||
|
|
CASE
|
||
|
|
WHEN user_id IS NOT NULL THEN 'user'
|
||
|
|
WHEN group_id IS NOT NULL THEN 'group'
|
||
|
|
END,
|
||
|
|
COALESCE(user_id, group_id),
|
||
|
|
permission_level,
|
||
|
|
tenant_id,
|
||
|
|
created_at,
|
||
|
|
updated_at
|
||
|
|
FROM contact_folder_permissions
|
||
|
|
ON CONFLICT DO NOTHING
|
||
|
|
""")
|
||
|
|
|
||
|
|
|
||
|
|
def downgrade() -> None:
|
||
|
|
op.execute("DELETE FROM entity_permissions WHERE entity_type = 'contact_folder'")
|