diff --git a/src/memos/api/handlers/memory_handler.py b/src/memos/api/handlers/memory_handler.py index 5cfa98160..2a99d912c 100644 --- a/src/memos/api/handlers/memory_handler.py +++ b/src/memos/api/handlers/memory_handler.py @@ -180,7 +180,12 @@ def handle_get_memories( get_mem_req: GetMemoryRequest, naive_mem_cube: NaiveMemCube ) -> GetMemoryResponse: # TODO: Implement get memory with filter - memories = naive_mem_cube.text_mem.get_all(user_name=get_mem_req.mem_cube_id)["nodes"] + memories = naive_mem_cube.text_mem.get_all( + user_name=get_mem_req.mem_cube_id, + user_id=get_mem_req.user_id, + page=get_mem_req.page, + page_size=get_mem_req.page_size, + )["nodes"] preferences: list[TextualMemoryItem] = [] if get_mem_req.include_preference and naive_mem_cube.pref_mem is not None: filter_params: dict[str, Any] = {} diff --git a/src/memos/api/product_models.py b/src/memos/api/product_models.py index 120da8b55..25e0d809d 100644 --- a/src/memos/api/product_models.py +++ b/src/memos/api/product_models.py @@ -772,6 +772,13 @@ class GetMemoryRequest(BaseRequest): mem_cube_id: str = Field(..., description="Cube ID") user_id: str | None = Field(None, description="User ID") include_preference: bool = Field(True, description="Whether to handle preference memory") + page: int | None = Field( + None, + description="Page number (starts from 1). If None, exports all data without pagination.", + ) + page_size: int | None = Field( + None, description="Number of items per page. If None, exports all data without pagination." + ) class DeleteMemoryRequest(BaseRequest): diff --git a/src/memos/graph_dbs/nebular.py b/src/memos/graph_dbs/nebular.py index 89b58f417..428d6d09e 100644 --- a/src/memos/graph_dbs/nebular.py +++ b/src/memos/graph_dbs/nebular.py @@ -1207,7 +1207,7 @@ def clear(self, user_name: str | None = None) -> None: @timed def export_graph( - self, include_embedding: bool = False, user_name: str | None = None + self, include_embedding: bool = False, user_name: str | None = None, **kwargs ) -> dict[str, Any]: """ Export all graph nodes and edges in a structured form. diff --git a/src/memos/graph_dbs/polardb.py b/src/memos/graph_dbs/polardb.py index fcb7e0caa..4799542bf 100644 --- a/src/memos/graph_dbs/polardb.py +++ b/src/memos/graph_dbs/polardb.py @@ -2507,6 +2507,7 @@ def export_graph( user_name: str | None = None, page: int | None = None, page_size: int | None = None, + **kwargs, ) -> dict[str, Any]: """ Export all graph nodes and edges in a structured form. diff --git a/src/memos/memories/textual/tree.py b/src/memos/memories/textual/tree.py index fb33a2d03..764ceee67 100644 --- a/src/memos/memories/textual/tree.py +++ b/src/memos/memories/textual/tree.py @@ -321,12 +321,20 @@ def get_by_ids( ) -> list[TextualMemoryItem]: raise NotImplementedError - def get_all(self, user_name: str | None = None) -> dict: + def get_all( + self, + user_name: str, + user_id: str | None = None, + page: int | None = None, + page_size: int | None = None, + ) -> dict: """Get all memories. Returns: list[TextualMemoryItem]: List of all memories. """ - all_items = self.graph_store.export_graph(user_name=user_name) + all_items = self.graph_store.export_graph( + user_name=user_name, user_id=user_id, page=page, page_size=page_size + ) return all_items def delete(self, memory_ids: list[str], user_name: str | None = None) -> None: