Spaces:
Build error
Build error
from flask_restful import Resource, marshal_with, reqparse | |
from sqlalchemy import select | |
from sqlalchemy.orm import Session | |
from controllers.console import api | |
from controllers.console.app.wraps import get_app_model | |
from controllers.console.wraps import account_initialization_required, setup_required | |
from extensions.ext_database import db | |
from fields.conversation_variable_fields import paginated_conversation_variable_fields | |
from libs.login import login_required | |
from models import ConversationVariable | |
from models.model import AppMode | |
class ConversationVariablesApi(Resource): | |
def get(self, app_model): | |
parser = reqparse.RequestParser() | |
parser.add_argument("conversation_id", type=str, location="args") | |
args = parser.parse_args() | |
stmt = ( | |
select(ConversationVariable) | |
.where(ConversationVariable.app_id == app_model.id) | |
.order_by(ConversationVariable.created_at) | |
) | |
if args["conversation_id"]: | |
stmt = stmt.where(ConversationVariable.conversation_id == args["conversation_id"]) | |
else: | |
raise ValueError("conversation_id is required") | |
# NOTE: This is a temporary solution to avoid performance issues. | |
page = 1 | |
page_size = 100 | |
stmt = stmt.limit(page_size).offset((page - 1) * page_size) | |
with Session(db.engine) as session: | |
rows = session.scalars(stmt).all() | |
return { | |
"page": page, | |
"limit": page_size, | |
"total": len(rows), | |
"has_more": False, | |
"data": [ | |
{ | |
"created_at": row.created_at, | |
"updated_at": row.updated_at, | |
**row.to_variable().model_dump(), | |
} | |
for row in rows | |
], | |
} | |
api.add_resource(ConversationVariablesApi, "/apps/<uuid:app_id>/conversation-variables") | |