Skip to content

Commit

Permalink
fix(agents-api): Simplify metadata_filter type to dict
Browse files Browse the repository at this point in the history
Signed-off-by: Diwank Singh Tomer <[email protected]>
  • Loading branch information
creatorrr committed Oct 5, 2024
1 parent 59f2423 commit 71da38e
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 34 deletions.
16 changes: 5 additions & 11 deletions agents-api/agents_api/dependencies/query_filter.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,6 @@
from typing import Any, Callable

from fastapi import Request
from pydantic import BaseModel


class FilterModel(BaseModel):
class Config:
extra = "allow" # Allow arbitrary fields


def convert_value(value: str) -> Any:
Expand All @@ -21,29 +15,29 @@ def convert_value(value: str) -> Any:
return value


def create_filter_extractor(prefix: str = "filter") -> Callable[[Request], FilterModel]:
def create_filter_extractor(prefix: str = "filter") -> Callable[[Request], dict[str, Any]]:
"""
Creates a dependency function to extract filter parameters with a given prefix.
Args:
prefix (str): The prefix to identify filter parameters.
Returns:
Callable[[Request], FilterModel]: The dependency function.
Callable[[Request], dict[str, Any]]: The dependency function.
"""

# Add a dot to the prefix to allow for nested filters
prefix += "."

def extract_filters(request: Request) -> FilterModel:
def extract_filters(request: Request) -> dict[str, Any]:
"""
Extracts query parameters that start with the specified prefix and returns them as a dictionary.
Args:
request (Request): The incoming HTTP request.
Returns:
FilterModel: A FilterModel instance containing the filter parameters.
dict[str, Any]: A dictionary containing the filter parameters.
"""

filters: dict[str, Any] = {}
Expand All @@ -53,6 +47,6 @@ def extract_filters(request: Request) -> FilterModel:
filter_key = key[len(prefix) :]
filters[filter_key] = convert_value(value)

return FilterModel(**filters)
return filters

return extract_filters
8 changes: 3 additions & 5 deletions agents-api/agents_api/routers/agents/list_agents.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

from ...autogen.openapi_model import Agent, ListResponse
from ...dependencies.developer_id import get_developer_id
from ...dependencies.query_filter import FilterModel, create_filter_extractor
from ...dependencies.query_filter import create_filter_extractor
from ...models.agent.list_agents import list_agents as list_agents_query
from .router import router

Expand All @@ -17,7 +17,7 @@ async def list_agents(
# Example:
# > ?metadata_filter.name=John&metadata_filter.age=30
metadata_filter: Annotated[
FilterModel, Depends(create_filter_extractor("metadata_filter"))
dict, Depends(create_filter_extractor("metadata_filter"))
],
limit: int = 100,
offset: int = 0,
Expand All @@ -30,9 +30,7 @@ async def list_agents(
offset=offset,
sort_by=sort_by,
direction=direction,
metadata_filter=metadata_filter.model_dump(mode="json")
if metadata_filter
else {},
metadata_filter=metadata_filter or {},
)

return ListResponse[Agent](items=agents)
14 changes: 5 additions & 9 deletions agents-api/agents_api/routers/docs/list_docs.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

from ...autogen.openapi_model import Doc, ListResponse
from ...dependencies.developer_id import get_developer_id
from ...dependencies.query_filter import FilterModel, create_filter_extractor
from ...dependencies.query_filter import create_filter_extractor
from ...models.docs.list_docs import list_docs as list_docs_query
from .router import router

Expand All @@ -14,7 +14,7 @@
async def list_user_docs(
x_developer_id: Annotated[UUID, Depends(get_developer_id)],
metadata_filter: Annotated[
FilterModel, Depends(create_filter_extractor("metadata_filter"))
dict, Depends(create_filter_extractor("metadata_filter"))
],
user_id: UUID,
limit: int = 100,
Expand All @@ -30,9 +30,7 @@ async def list_user_docs(
offset=offset,
sort_by=sort_by,
direction=direction,
metadata_filter=metadata_filter.model_dump(mode="json")
if metadata_filter
else {},
metadata_filter=metadata_filter or {},
)

return ListResponse[Doc](items=docs)
Expand All @@ -42,7 +40,7 @@ async def list_user_docs(
async def list_agent_docs(
x_developer_id: Annotated[UUID, Depends(get_developer_id)],
metadata_filter: Annotated[
FilterModel, Depends(create_filter_extractor("metadata_filter"))
dict, Depends(create_filter_extractor("metadata_filter"))
],
agent_id: UUID,
limit: int = 100,
Expand All @@ -58,9 +56,7 @@ async def list_agent_docs(
offset=offset,
sort_by=sort_by,
direction=direction,
metadata_filter=metadata_filter.model_dump(mode="json")
if metadata_filter
else {},
metadata_filter=metadata_filter or {},
)

return ListResponse[Doc](items=docs)
14 changes: 5 additions & 9 deletions agents-api/agents_api/routers/sessions/list_sessions.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
import json
from json import JSONDecodeError
from typing import Annotated, Literal
from uuid import UUID

from fastapi import Depends, HTTPException, status
from fastapi import Depends

from ...autogen.openapi_model import ListResponse, Session
from ...dependencies.developer_id import get_developer_id
from ...dependencies.query_filter import FilterModel, create_filter_extractor
from ...dependencies.query_filter import create_filter_extractor
from ...models.session.list_sessions import list_sessions as list_sessions_query
from .router import router

Expand All @@ -16,8 +14,8 @@
async def list_sessions(
x_developer_id: Annotated[UUID, Depends(get_developer_id)],
metadata_filter: Annotated[
FilterModel | None, Depends(create_filter_extractor("metadata_filter"))
],
dict, Depends(create_filter_extractor("metadata_filter"))
] = {},
limit: int = 100,
offset: int = 0,
sort_by: Literal["created_at", "updated_at"] = "created_at",
Expand All @@ -29,9 +27,7 @@ async def list_sessions(
offset=offset,
sort_by=sort_by,
direction=direction,
metadata_filter=metadata_filter.model_dump(mode="json")
if metadata_filter
else {},
metadata_filter=metadata_filter or {},
)

return ListResponse[Session](items=sessions)

0 comments on commit 71da38e

Please sign in to comment.