From bffb0f129bc61bacc57ec2591d3e6525e3088b93 Mon Sep 17 00:00:00 2001 From: Marcelo Nunes Alves Date: Tue, 8 Oct 2024 08:38:25 -0300 Subject: [PATCH] fix: Update the columns that need to change their type to text (MySQL e MariaDB) (#4026) * fix: Update the columns that need to change their type to text * [autofix.ci] apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> --- ...update_the_columns_that_need_to_change_.py | 70 +++++++++++++++++++ .../services/database/models/message/model.py | 3 +- .../database/models/vertex_builds/model.py | 3 +- 3 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 src/backend/base/langflow/alembic/versions/0ae3a2674f32_update_the_columns_that_need_to_change_.py diff --git a/src/backend/base/langflow/alembic/versions/0ae3a2674f32_update_the_columns_that_need_to_change_.py b/src/backend/base/langflow/alembic/versions/0ae3a2674f32_update_the_columns_that_need_to_change_.py new file mode 100644 index 000000000..cc5160a49 --- /dev/null +++ b/src/backend/base/langflow/alembic/versions/0ae3a2674f32_update_the_columns_that_need_to_change_.py @@ -0,0 +1,70 @@ +"""Update the columns that need to change their type to text + +Revision ID: 0ae3a2674f32 +Revises: d2d475a1f7c0 +Create Date: 2024-10-04 17:30:12.924809 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa +import sqlmodel +from sqlalchemy.engine.reflection import Inspector +from langflow.utils import migration +from sqlalchemy.dialects import sqlite + +# revision identifiers, used by Alembic. +revision: str = '0ae3a2674f32' +down_revision: Union[str, None] = 'd2d475a1f7c0' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + +def upgrade() -> None: + conn = op.get_bind() + # ### commands auto generated by Alembic - please adjust! ### + inspector = Inspector.from_engine(conn) # type: ignore + + with op.batch_alter_table("vertex_build", schema=None) as batch_op: + if migration.column_exists(table_name="vertex_build", column_name="params", conn=conn): + columns = inspector.get_columns("vertex_build") + params_column = next((column for column in columns if column["name"] == "params"), None) + if params_column is not None and isinstance(params_column["type"], sa.VARCHAR): + batch_op.alter_column( + "params", existing_type=sa.VARCHAR(), type_=sa.Text(), existing_nullable=True + ) + + with op.batch_alter_table("message", schema=None) as batch_op: + if migration.column_exists(table_name="message", column_name="text", conn=conn): + columns = inspector.get_columns("message") + text_column = next((column for column in columns if column["name"] == "text"), None) + if text_column is not None and isinstance(text_column["type"], sa.VARCHAR): + batch_op.alter_column( + "text", existing_type=sa.VARCHAR(), type_=sa.Text(), existing_nullable=True + ) + + # ### end Alembic commands ### + + +def downgrade() -> None: + conn = op.get_bind() + # ### commands auto generated by Alembic - please adjust! ### + inspector = Inspector.from_engine(conn) # type: ignore + with op.batch_alter_table("message", schema=None) as batch_op: + if migration.column_exists(table_name="message", column_name="text", conn=conn): + columns = inspector.get_columns("message") + text_column = next((column for column in columns if column["name"] == "text"), None) + if text_column is not None and isinstance(text_column["type"], sa.VARCHAR): + batch_op.alter_column( + "text", existing_type=sa.VARCHAR(), type_=sa.Text(), existing_nullable=True + ) + + with op.batch_alter_table("vertex_build", schema=None) as batch_op: + if migration.column_exists(table_name="vertex_build", column_name="params", conn=conn): + columns = inspector.get_columns("vertex_build") + params_column = next((column for column in columns if column["name"] == "params"), None) + if params_column is not None and isinstance(params_column["type"], sa.VARCHAR): + batch_op.alter_column( + "params", existing_type=sa.VARCHAR(), type_=sa.Text(), existing_nullable=True + ) + # ### end Alembic commands ### \ No newline at end of file diff --git a/src/backend/base/langflow/services/database/models/message/model.py b/src/backend/base/langflow/services/database/models/message/model.py index c4a759bb1..355ac2d2c 100644 --- a/src/backend/base/langflow/services/database/models/message/model.py +++ b/src/backend/base/langflow/services/database/models/message/model.py @@ -3,6 +3,7 @@ from typing import TYPE_CHECKING from uuid import UUID, uuid4 from pydantic import field_validator +from sqlalchemy import Text from sqlmodel import JSON, Column, Field, Relationship, SQLModel if TYPE_CHECKING: @@ -15,7 +16,7 @@ class MessageBase(SQLModel): sender: str sender_name: str session_id: str - text: str + text: str = Field(sa_column=Column(Text)) files: list[str] = Field(default_factory=list) @field_validator("files", mode="before") diff --git a/src/backend/base/langflow/services/database/models/vertex_builds/model.py b/src/backend/base/langflow/services/database/models/vertex_builds/model.py index ab535dbc2..6326dfcc9 100644 --- a/src/backend/base/langflow/services/database/models/vertex_builds/model.py +++ b/src/backend/base/langflow/services/database/models/vertex_builds/model.py @@ -3,6 +3,7 @@ from typing import TYPE_CHECKING from uuid import UUID, uuid4 from pydantic import BaseModel, field_serializer, field_validator +from sqlalchemy import Text from sqlmodel import JSON, Column, Field, Relationship, SQLModel if TYPE_CHECKING: @@ -14,7 +15,7 @@ class VertexBuildBase(SQLModel): id: str = Field(nullable=False) data: dict | None = Field(default=None, sa_column=Column(JSON)) artifacts: dict | None = Field(default=None, sa_column=Column(JSON)) - params: str | None = Field(nullable=True) + params: str | None = Field(default=None, sa_column=Column(Text, nullable=True)) valid: bool = Field(nullable=False) flow_id: UUID = Field(foreign_key="flow.id")