Skip to content

Commit 8e88545

Browse files
committed
Resolve personas/list 422 errors
1 parent f17cf00 commit 8e88545

3 files changed

Lines changed: 28 additions & 5 deletions

File tree

chat_server/blueprints/personas.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
2727
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2828

29-
from fastapi import APIRouter
29+
from fastapi import APIRouter, Query, Depends
3030
from starlette.responses import JSONResponse
3131

3232
from chat_server.utils.enums import RequestModelType, UserRoles
@@ -48,6 +48,7 @@
4848
PersonaData,
4949
)
5050
from chat_server.utils.api_dependencies.validators import permitted_access
51+
from chat_server.utils.api_dependencies.direct_query import list_personas_query
5152
from klatchat_utils.database_utils.mongo_utils import MongoFilter, MongoLogicalOperators
5253
from klatchat_utils.database_utils.mongo_utils.queries.wrapper import MongoDocumentsAPI
5354

@@ -60,7 +61,7 @@
6061
@router.get("/list")
6162
async def list_personas(
6263
current_user: CurrentUserData,
63-
request_model: ListPersonasQueryModel = permitted_access(ListPersonasQueryModel),
64+
request_model: ListPersonasQueryModel = Depends(list_personas_query),
6465
) -> JSONResponse:
6566
"""Lists personas matching query params"""
6667
filters = []
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
"""
2+
Direct query parameter handling for FastAPI endpoints.
3+
"""
4+
5+
from fastapi import Query
6+
from typing import Optional, Type, List
7+
from pydantic import BaseModel
8+
9+
from chat_server.utils.api_dependencies.models import ListPersonasQueryModel
10+
11+
12+
def list_personas_query(
13+
llms: Optional[List[str]] = Query(None),
14+
user_id: Optional[str] = Query(None),
15+
only_enabled: bool = Query(False),
16+
) -> ListPersonasQueryModel:
17+
"""
18+
Creates a ListPersonasQueryModel from direct query parameters.
19+
This avoids the issue with FastAPI's dependency injection system.
20+
"""
21+
return ListPersonasQueryModel(llms=llms, user_id=user_id, only_enabled=only_enabled)

chat_server/utils/api_dependencies/models/personas.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
from fastapi import Query
3030
from pydantic import Field, computed_field, BaseModel
31+
from typing import Optional
3132

3233

3334
class PersonaModel(BaseModel):
@@ -84,6 +85,6 @@ class TogglePersonaStatusModel(PersonaModel):
8485

8586

8687
class ListPersonasQueryModel(BaseModel):
87-
llms: list[str] | None = Field(Query(default=None), examples=[["doctor"]])
88-
user_id: str | None = Field(Query(default=None), examples=["test_user_id"])
89-
only_enabled: bool = Field(Query(default=False), examples=[True, False])
88+
llms: list[str] | None = Field(default=None, examples=[["doctor"]])
89+
user_id: str | None = Field(default=None, examples=["test_user_id"])
90+
only_enabled: bool = Field(default=False, examples=[True, False])

0 commit comments

Comments
 (0)