diff --git a/src/backend/langflow/alembic/versions/5512e39b4012_add_apikey_table.py b/src/backend/langflow/alembic/versions/5512e39b4012_add_apikey_table.py index 02db82e71..ebf549eda 100644 --- a/src/backend/langflow/alembic/versions/5512e39b4012_add_apikey_table.py +++ b/src/backend/langflow/alembic/versions/5512e39b4012_add_apikey_table.py @@ -27,6 +27,9 @@ def upgrade() -> None: op.create_table( "apikey", sa.Column("api_key", sqlmodel.sql.sqltypes.AutoString(), nullable=False), + sa.Column( + "hashed_api_key", sqlmodel.sql.sqltypes.AutoString(), nullable=False + ), sa.Column("name", sqlmodel.sql.sqltypes.AutoString(), nullable=False), sa.Column("create_at", sa.DateTime(), nullable=False), sa.Column("last_used_at", sa.DateTime(), nullable=True), diff --git a/src/backend/langflow/alembic/versions/6384181fb7e8_update_api_key.py b/src/backend/langflow/alembic/versions/6384181fb7e8_update_api_key.py new file mode 100644 index 000000000..6b5f30ca6 --- /dev/null +++ b/src/backend/langflow/alembic/versions/6384181fb7e8_update_api_key.py @@ -0,0 +1,54 @@ +"""Update API key + +Revision ID: 6384181fb7e8 +Revises: d3749cf7ac7e +Create Date: 2023-08-25 20:00:22.889883 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa +import sqlmodel +import contextlib + +# revision identifiers, used by Alembic. +revision: str = "6384181fb7e8" +down_revision: Union[str, None] = "d3749cf7ac7e" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + with contextlib.suppress(sa.exc.OperationalError): + op.add_column( + "apikey", + sa.Column( + "hashed_api_key", sqlmodel.sql.sqltypes.AutoString(), nullable=False + ), + ) + op.alter_column("apikey", "name", existing_type=sa.VARCHAR(), nullable=True) + op.create_index( + op.f("ix_apikey_hashed_api_key"), "apikey", ["hashed_api_key"], unique=False + ) + op.create_index(op.f("ix_apikey_name"), "apikey", ["name"], unique=False) + op.create_foreign_key(None, "apikey", "user", ["user_id"], ["id"]) + with contextlib.suppress(sa.exc.OperationalError): + op.alter_column( + "flow", "user_id", existing_type=sa.CHAR(length=32), nullable=False + ) + op.create_foreign_key(None, "flow", "user", ["user_id"], ["id"]) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint(None, "flow", type_="foreignkey") + op.alter_column("flow", "user_id", existing_type=sa.CHAR(length=32), nullable=True) + op.drop_constraint(None, "apikey", type_="foreignkey") + op.drop_index(op.f("ix_apikey_name"), table_name="apikey") + op.drop_index(op.f("ix_apikey_hashed_api_key"), table_name="apikey") + op.alter_column("apikey", "name", existing_type=sa.VARCHAR(), nullable=False) + op.drop_column("apikey", "hashed_api_key") + # ### end Alembic commands ### diff --git a/src/backend/langflow/api/v1/api_key.py b/src/backend/langflow/api/v1/api_key.py index df2d3e420..81b5d976f 100644 --- a/src/backend/langflow/api/v1/api_key.py +++ b/src/backend/langflow/api/v1/api_key.py @@ -58,4 +58,4 @@ def delete_api_key_route( delete_api_key(db, api_key_id) return {"detail": "API Key deleted"} except Exception as e: - raise HTTPException(status_code=400, detail=str(e)) + raise HTTPException(status_code=400, detail=str(e)) from e