sprint8: fix migration 0054 — skip existing owner_id columns

This commit is contained in:
Agent Zero
2026-07-29 02:35:32 +02:00
parent 958e412152
commit b7ccd9e6c3
+28 -15
View File
@@ -3,10 +3,6 @@
Revision ID: 0054 Revision ID: 0054
Revises: 0053 Revises: 0053
Create Date: 2026-07-29 Create Date: 2026-07-29
This migration adds owner_id to plugin entity tables (files, folders,
calendar_entries, calendars, tasks, subtasks) so that the universal
visibility/permission system can be used for plugin entities.
""" """
from alembic import op from alembic import op
@@ -18,7 +14,7 @@ down_revision = "0053"
branch_labels = None branch_labels = None
depends_on = None depends_on = None
# Plugin entity tables that need owner_id # Tables that need owner_id
TABLES = [ TABLES = [
"files", "files",
"folders", "folders",
@@ -30,20 +26,37 @@ TABLES = [
def upgrade() -> None: def upgrade() -> None:
# Check which columns already exist before adding
conn = op.get_bind()
for table in TABLES: for table in TABLES:
op.add_column( # Check if column already exists
table, result = conn.execute(
sa.Column( sa.text(
"owner_id", "SELECT column_name FROM information_schema.columns "
PGUUID(as_uuid=True), "WHERE table_name = :table AND column_name = 'owner_id'"
sa.ForeignKey("users.id", ondelete="SET NULL"),
nullable=True,
), ),
{"table": table},
) )
op.create_index(f"ix_{table}_owner", table, ["owner_id"]) if result.fetchone() is None:
op.add_column(
table,
sa.Column(
"owner_id",
PGUUID(as_uuid=True),
sa.ForeignKey("users.id", ondelete="SET NULL"),
nullable=True,
),
)
op.create_index(f"ix_{table}_owner", table, ["owner_id"])
def downgrade() -> None: def downgrade() -> None:
for table in TABLES: for table in TABLES:
op.drop_index(f"ix_{table}_owner", table_name=table) try:
op.drop_column(table, "owner_id") op.drop_index(f"ix_{table}_owner", table_name=table)
except Exception:
pass
try:
op.drop_column(table, "owner_id")
except Exception:
pass