mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-06-08 20:25:19 +02:00
Add delete_from_db parameter and DB deletion logic to delete_notion_page
This commit is contained in:
parent
45de7d546c
commit
cc36780c67
2 changed files with 49 additions and 7 deletions
|
|
@ -33,6 +33,7 @@ def create_delete_notion_page_tool(
|
||||||
@tool
|
@tool
|
||||||
async def delete_notion_page(
|
async def delete_notion_page(
|
||||||
page_title: str,
|
page_title: str,
|
||||||
|
delete_from_db: bool = False,
|
||||||
) -> dict[str, Any]:
|
) -> dict[str, Any]:
|
||||||
"""Delete (archive) a Notion page.
|
"""Delete (archive) a Notion page.
|
||||||
|
|
||||||
|
|
@ -42,19 +43,23 @@ def create_delete_notion_page_tool(
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
page_title: The title of the Notion page to delete.
|
page_title: The title of the Notion page to delete.
|
||||||
|
delete_from_db: Whether to also remove the page from the knowledge base.
|
||||||
|
Default is False (in Notion).
|
||||||
|
Set to True to permanently remove from both Notion and knowledge base.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Dictionary with:
|
Dictionary with:
|
||||||
- status: "success" or "error"
|
- status: "success", "rejected", "not_found", or "error"
|
||||||
- page_id: Deleted page ID
|
- page_id: Deleted page ID (if success)
|
||||||
- message: Success or error message
|
- message: Success or error message
|
||||||
|
- deleted_from_db: Whether the page was also removed from knowledge base (if success)
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
- "Delete the 'Meeting Notes' Notion page"
|
- "Delete the 'Meeting Notes' Notion page"
|
||||||
- "Remove the 'Old Project Plan' Notion page"
|
- "Remove the 'Old Project Plan' Notion page"
|
||||||
- "Archive the 'Draft Ideas' Notion page"
|
- "Archive the 'Draft Ideas' Notion page"
|
||||||
"""
|
"""
|
||||||
logger.info(f"delete_notion_page called: page_title='{page_title}'")
|
logger.info(f"delete_notion_page called: page_title='{page_title}', delete_from_db={delete_from_db}")
|
||||||
|
|
||||||
if db_session is None or search_space_id is None or user_id is None:
|
if db_session is None or search_space_id is None or user_id is None:
|
||||||
logger.error("Notion tool not properly configured - missing required parameters")
|
logger.error("Notion tool not properly configured - missing required parameters")
|
||||||
|
|
@ -88,8 +93,9 @@ def create_delete_notion_page_tool(
|
||||||
|
|
||||||
page_id = context.get("page_id")
|
page_id = context.get("page_id")
|
||||||
connector_id_from_context = context.get("account", {}).get("id")
|
connector_id_from_context = context.get("account", {}).get("id")
|
||||||
|
document_id = context.get("document_id")
|
||||||
|
|
||||||
logger.info(f"Requesting approval for deleting Notion page: '{page_title}' (page_id={page_id})")
|
logger.info(f"Requesting approval for deleting Notion page: '{page_title}' (page_id={page_id}, delete_from_db={delete_from_db})")
|
||||||
# Request approval before deleting
|
# Request approval before deleting
|
||||||
approval = interrupt(
|
approval = interrupt(
|
||||||
{
|
{
|
||||||
|
|
@ -99,6 +105,7 @@ def create_delete_notion_page_tool(
|
||||||
"params": {
|
"params": {
|
||||||
"page_id": page_id,
|
"page_id": page_id,
|
||||||
"connector_id": connector_id_from_context,
|
"connector_id": connector_id_from_context,
|
||||||
|
"delete_from_db": delete_from_db,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"context": context,
|
"context": context,
|
||||||
|
|
@ -132,9 +139,43 @@ def create_delete_notion_page_tool(
|
||||||
connector_id=connector_id_from_context,
|
connector_id=connector_id_from_context,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Delete the page
|
# Delete the page from Notion
|
||||||
result = await notion_connector.delete_page(page_id=page_id)
|
result = await notion_connector.delete_page(page_id=page_id)
|
||||||
logger.info(f"delete_page result: {result.get('status')} - {result.get('message', '')}")
|
logger.info(f"delete_page result: {result.get('status')} - {result.get('message', '')}")
|
||||||
|
|
||||||
|
# If deletion was successful and user wants to delete from DB
|
||||||
|
deleted_from_db = False
|
||||||
|
if result.get("status") == "success" and delete_from_db and document_id:
|
||||||
|
try:
|
||||||
|
from sqlalchemy.future import select
|
||||||
|
|
||||||
|
from app.db import Document
|
||||||
|
|
||||||
|
# Get the document
|
||||||
|
doc_result = await db_session.execute(
|
||||||
|
select(Document).filter(Document.id == document_id)
|
||||||
|
)
|
||||||
|
document = doc_result.scalars().first()
|
||||||
|
|
||||||
|
if document:
|
||||||
|
await db_session.delete(document)
|
||||||
|
await db_session.commit()
|
||||||
|
deleted_from_db = True
|
||||||
|
logger.info(f"Deleted document {document_id} from knowledge base")
|
||||||
|
else:
|
||||||
|
logger.warning(f"Document {document_id} not found in DB")
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Failed to delete document from DB: {e}")
|
||||||
|
# Don't fail the whole operation if DB deletion fails
|
||||||
|
# The page is already deleted from Notion, so inform the user
|
||||||
|
result["warning"] = f"Page deleted from Notion, but failed to remove from knowledge base: {e!s}"
|
||||||
|
|
||||||
|
# Update result with DB deletion status
|
||||||
|
if result.get("status") == "success":
|
||||||
|
result["deleted_from_db"] = deleted_from_db
|
||||||
|
if deleted_from_db:
|
||||||
|
result["message"] = f"{result.get('message', '')} (also removed from knowledge base)"
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
|
|
|
||||||
|
|
@ -229,12 +229,13 @@ BUILTIN_TOOLS: list[ToolDefinition] = [
|
||||||
),
|
),
|
||||||
ToolDefinition(
|
ToolDefinition(
|
||||||
name="delete_notion_page",
|
name="delete_notion_page",
|
||||||
description="Delete (archive) a Notion page",
|
description="Delete a Notion page by title",
|
||||||
factory=lambda deps: create_delete_notion_page_tool(
|
factory=lambda deps: create_delete_notion_page_tool(
|
||||||
db_session=deps["db_session"],
|
db_session=deps["db_session"],
|
||||||
search_space_id=deps["search_space_id"],
|
search_space_id=deps["search_space_id"],
|
||||||
|
user_id=deps["user_id"],
|
||||||
),
|
),
|
||||||
requires=["db_session", "search_space_id"],
|
requires=["db_session", "search_space_id", "user_id"],
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue