Files
letta-server/alembic/versions/fdcdafdb11cf_identity_properties_jsonb_to_json.py
2025-07-17 18:04:13 -07:00

70 lines
2.1 KiB
Python

"""identity properties jsonb to json
Revision ID: fdcdafdb11cf
Revises: 549eff097c71
Create Date: 2025-02-21 10:30:49.937854
"""
from typing import Sequence, Union
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql
from alembic import op
from letta.settings import settings
# revision identifiers, used by Alembic.
revision: str = "fdcdafdb11cf"
down_revision: Union[str, None] = "549eff097c71"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
# Skip this migration for SQLite
if not settings.letta_pg_uri_no_default:
return
# ### commands auto generated by Alembic - please adjust! ###
op.alter_column(
"identities",
"properties",
existing_type=postgresql.JSONB(astext_type=sa.Text()),
type_=postgresql.JSON(astext_type=sa.Text()),
existing_nullable=False,
existing_server_default=sa.text("'[]'::jsonb"),
)
op.drop_constraint("unique_identifier_without_project", "identities", type_="unique")
op.create_unique_constraint(
"unique_identifier_key_project_id_organization_id",
"identities",
["identifier_key", "project_id", "organization_id"],
postgresql_nulls_not_distinct=True,
)
# ### end Alembic commands ###
def downgrade() -> None:
# Skip this migration for SQLite
if not settings.letta_pg_uri_no_default:
return
# ### commands auto generated by Alembic - please adjust! ###
op.drop_constraint("unique_identifier_key_project_id_organization_id", "identities", type_="unique")
op.create_unique_constraint(
"unique_identifier_without_project",
"identities",
["identifier_key", "project_id", "organization_id"],
postgresql_nulls_not_distinct=True,
)
op.alter_column(
"identities",
"properties",
existing_type=postgresql.JSON(astext_type=sa.Text()),
type_=postgresql.JSONB(astext_type=sa.Text()),
existing_nullable=False,
existing_server_default=sa.text("'[]'::jsonb"),
)
# ### end Alembic commands ###