This commit is contained in:
-LAN- 2025-12-29 16:48:30 +08:00 committed by GitHub
commit e615e83b54
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 31 additions and 9 deletions

View File

@ -338,9 +338,7 @@ class CompletionConversationApi(Resource):
current_user, _ = current_account_with_tenant() current_user, _ = current_account_with_tenant()
args = CompletionConversationQuery.model_validate(request.args.to_dict(flat=True)) # type: ignore args = CompletionConversationQuery.model_validate(request.args.to_dict(flat=True)) # type: ignore
query = sa.select(Conversation).where( query = sa.select(Conversation).where(Conversation.app_id == app_model.id, Conversation.mode == "completion")
Conversation.app_id == app_model.id, Conversation.mode == "completion", Conversation.is_deleted.is_(False)
)
if args.keyword: if args.keyword:
query = query.join(Message, Message.conversation_id == Conversation.id).where( query = query.join(Message, Message.conversation_id == Conversation.id).where(
@ -452,7 +450,7 @@ class ChatConversationApi(Resource):
.subquery() .subquery()
) )
query = sa.select(Conversation).where(Conversation.app_id == app_model.id, Conversation.is_deleted.is_(False)) query = sa.select(Conversation).where(Conversation.app_id == app_model.id)
if args.keyword: if args.keyword:
keyword_filter = f"%{args.keyword}%" keyword_filter = f"%{args.keyword}%"

View File

@ -0,0 +1,29 @@
"""remove unused is_deleted from conversations
Revision ID: e5d7a95e676f
Revises: d57accd375ae
Create Date: 2025-11-27 18:27:09.006691
"""
import sqlalchemy as sa
from alembic import op
revision = "e5d7a95e676f"
down_revision = "d57accd375ae"
branch_labels = None
depends_on = None
def upgrade():
conversations = sa.table("conversations", sa.column("is_deleted", sa.Boolean))
op.execute(sa.delete(conversations).where(conversations.c.is_deleted == sa.true()))
with op.batch_alter_table("conversations", schema=None) as batch_op:
batch_op.drop_column("is_deleted")
def downgrade():
with op.batch_alter_table("conversations", schema=None) as batch_op:
batch_op.add_column(
sa.Column("is_deleted", sa.BOOLEAN(), server_default=sa.text("false"), autoincrement=False, nullable=False)
)

View File

@ -676,8 +676,6 @@ class Conversation(Base):
"MessageAnnotation", backref="conversation", lazy="select", passive_deletes="all" "MessageAnnotation", backref="conversation", lazy="select", passive_deletes="all"
) )
is_deleted: Mapped[bool] = mapped_column(sa.Boolean, nullable=False, server_default=sa.text("false"))
@property @property
def inputs(self) -> dict[str, Any]: def inputs(self) -> dict[str, Any]:
inputs = self._inputs.copy() inputs = self._inputs.copy()

View File

@ -49,7 +49,6 @@ class ConversationService:
return InfiniteScrollPagination(data=[], limit=limit, has_more=False) return InfiniteScrollPagination(data=[], limit=limit, has_more=False)
stmt = select(Conversation).where( stmt = select(Conversation).where(
Conversation.is_deleted == False,
Conversation.app_id == app_model.id, Conversation.app_id == app_model.id,
Conversation.from_source == ("api" if isinstance(user, EndUser) else "console"), Conversation.from_source == ("api" if isinstance(user, EndUser) else "console"),
Conversation.from_end_user_id == (user.id if isinstance(user, EndUser) else None), Conversation.from_end_user_id == (user.id if isinstance(user, EndUser) else None),
@ -168,7 +167,6 @@ class ConversationService:
Conversation.from_source == ("api" if isinstance(user, EndUser) else "console"), Conversation.from_source == ("api" if isinstance(user, EndUser) else "console"),
Conversation.from_end_user_id == (user.id if isinstance(user, EndUser) else None), Conversation.from_end_user_id == (user.id if isinstance(user, EndUser) else None),
Conversation.from_account_id == (user.id if isinstance(user, Account) else None), Conversation.from_account_id == (user.id if isinstance(user, Account) else None),
Conversation.is_deleted == False,
) )
.first() .first()
) )

View File

@ -149,7 +149,6 @@ class TestWebConversationService:
from_end_user_id=user.id if isinstance(user, EndUser) else None, from_end_user_id=user.id if isinstance(user, EndUser) else None,
from_account_id=user.id if isinstance(user, Account) else None, from_account_id=user.id if isinstance(user, Account) else None,
dialogue_count=0, dialogue_count=0,
is_deleted=False,
) )
from extensions.ext_database import db from extensions.ext_database import db