diff --git a/datajunction-server/datajunction_server/alembic/versions/2025_05_14_1545-cb7368a4bfae_change_enum_columns_to_string_type.py b/datajunction-server/datajunction_server/alembic/versions/2025_05_14_1545-cb7368a4bfae_change_enum_columns_to_string_type.py new file mode 100644 index 000000000..3d6bf7ccb --- /dev/null +++ b/datajunction-server/datajunction_server/alembic/versions/2025_05_14_1545-cb7368a4bfae_change_enum_columns_to_string_type.py @@ -0,0 +1,102 @@ +"""Change enum columns to string type + +Revision ID: cb7368a4bfae +Revises: 51547dcccb10 +Create Date: 2025-05-14 15:45:43.734154+00:00 + +""" +# pylint: disable=no-member, invalid-name, missing-function-docstring, unused-import, no-name-in-module + +import sqlalchemy as sa +from alembic import op +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision = "cb7368a4bfae" +down_revision = "51547dcccb10" +branch_labels = None +depends_on = None + + +def upgrade(): + with op.batch_alter_table("history", schema=None) as batch_op: + batch_op.alter_column( + "entity_type", + existing_type=postgresql.ENUM( + "ATTRIBUTE", + "AVAILABILITY", + "BACKFILL", + "CATALOG", + "COLUMN_ATTRIBUTE", + "DEPENDENCY", + "ENGINE", + "LINK", + "MATERIALIZATION", + "NAMESPACE", + "NODE", + "PARTITION", + "QUERY", + "TAG", + name="entitytype", + ), + type_=sa.String(length=20), + existing_nullable=True, + ) + batch_op.alter_column( + "activity_type", + existing_type=postgresql.ENUM( + "CREATE", + "DELETE", + "RESTORE", + "UPDATE", + "REFRESH", + "TAG", + "SET_ATTRIBUTE", + "STATUS_CHANGE", + name="activitytype", + ), + type_=sa.String(length=20), + existing_nullable=True, + ) + + +def downgrade(): + with op.batch_alter_table("history", schema=None) as batch_op: + batch_op.alter_column( + "activity_type", + existing_type=sa.String(length=20), + type_=postgresql.ENUM( + "CREATE", + "DELETE", + "RESTORE", + "UPDATE", + "REFRESH", + "TAG", + "SET_ATTRIBUTE", + "STATUS_CHANGE", + name="activitytype", + ), + existing_nullable=True, + ) + batch_op.alter_column( + "entity_type", + existing_type=sa.String(length=20), + type_=postgresql.ENUM( + "ATTRIBUTE", + "AVAILABILITY", + "BACKFILL", + "CATALOG", + "COLUMN_ATTRIBUTE", + "DEPENDENCY", + "ENGINE", + "LINK", + "MATERIALIZATION", + "NAMESPACE", + "NODE", + "PARTITION", + "QUERY", + "TAG", + name="entitytype", + ), + existing_nullable=True, + ) diff --git a/datajunction-server/datajunction_server/database/history.py b/datajunction-server/datajunction_server/database/history.py index e5ffd5f07..4dc8da1fd 100644 --- a/datajunction-server/datajunction_server/database/history.py +++ b/datajunction-server/datajunction_server/database/history.py @@ -8,7 +8,6 @@ JSON, BigInteger, DateTime, - Enum, Index, Integer, String, @@ -16,7 +15,6 @@ from sqlalchemy.orm import Mapped, mapped_column from datajunction_server.database.base import Base -from datajunction_server.internal.history import ActivityType, EntityType from datajunction_server.typing import UTCDatetime @@ -35,14 +33,14 @@ class History(Base): BigInteger().with_variant(Integer, "sqlite"), primary_key=True, ) - entity_type: Mapped[Optional[EntityType]] = mapped_column( - Enum(EntityType), + entity_type: Mapped[Optional[str]] = mapped_column( + String(20), default=None, ) entity_name: Mapped[Optional[str]] = mapped_column(String, default=None) node: Mapped[Optional[str]] = mapped_column(String, default=None) - activity_type: Mapped[Optional[ActivityType]] = mapped_column( - Enum(ActivityType), + activity_type: Mapped[Optional[str]] = mapped_column( + String(20), default=None, ) user: Mapped[Optional[str]] = mapped_column(String, default=None)