docs: fix Notion List Pages image and naming
This commit is contained in:
parent
1022891608
commit
bca1df64d7
5 changed files with 63 additions and 31 deletions
|
|
@ -5,13 +5,15 @@ import ZoomableImage from "/src/theme/ZoomableImage.js";
|
||||||
|
|
||||||
# Database Query
|
# Database Query
|
||||||
|
|
||||||
Langflow allows you to extend its functionality with custom components. The `NotionDatabaseQuery` component is designed to query a Notion database with filtering and sorting. It provides a convenient way to integrate Notion database querying capabilities into your Langflow workflows.
|
Langflow allows you to extend its functionality with custom components. The `NotionListPages
|
||||||
|
` component is designed to query a Notion database with filtering and sorting. It provides a convenient way to integrate Notion database querying capabilities into your Langflow workflows.
|
||||||
|
|
||||||
> **Tip**:
|
> **Tip**:
|
||||||
>
|
>
|
||||||
> ### Component Functionality
|
> ### Component Functionality
|
||||||
>
|
>
|
||||||
> The `NotionDatabaseQuery` component enables you to:
|
> The `NotionListPages
|
||||||
|
` component enables you to:
|
||||||
>
|
>
|
||||||
> - Query a Notion database with custom filters and sorting options
|
> - Query a Notion database with custom filters and sorting options
|
||||||
> - Retrieve specific pages from a Notion database based on the provided criteria
|
> - Retrieve specific pages from a Notion database based on the provided criteria
|
||||||
|
|
@ -19,27 +21,28 @@ Langflow allows you to extend its functionality with custom components. The `Not
|
||||||
|
|
||||||
## Component Usage
|
## Component Usage
|
||||||
|
|
||||||
To use the `NotionDatabaseQuery` component in a Langflow flow, follow these steps:
|
To use the `NotionListPages
|
||||||
|
` component in a Langflow flow, follow these steps:
|
||||||
|
|
||||||
1. **Add the `NotionDatabaseQuery` component to your flow.**
|
1. **Add the `NotionListPages
|
||||||
|
` component to your flow.**
|
||||||
2. **Configure the component by providing the required parameters:**
|
2. **Configure the component by providing the required parameters:**
|
||||||
- `notion_secret`: The Notion integration token for authentication.
|
- `notion_secret`: The Notion integration token for authentication.
|
||||||
- `database_id`: The ID of the Notion database you want to query.
|
- `database_id`: The ID of the Notion database you want to query.
|
||||||
- `query_payload`: A JSON string containing the filters and sorting options for the query.
|
- `query_payload`: A JSON string containing the filters and sorting options for the query.
|
||||||
3. **Connect the `NotionDatabaseQuery` component to other components in your flow as needed.**
|
3. **Connect the `NotionListPages
|
||||||
|
` component to other components in your flow as needed.**
|
||||||
|
|
||||||
### Example Component Code
|
### Example Component Code
|
||||||
|
|
||||||
```python
|
```python
|
||||||
import requests
|
import requests
|
||||||
from typing import Dict, Any
|
import json
|
||||||
from langchain.agents import Tool
|
from typing import Dict, Any, List
|
||||||
|
|
||||||
from langflow.base.tools.base import build_status_from_tool
|
|
||||||
from langflow.custom import CustomComponent
|
from langflow.custom import CustomComponent
|
||||||
|
from langflow.schema import Record
|
||||||
|
|
||||||
|
class NotionListPages(CustomComponent):
|
||||||
class NotionDatabaseQuery(CustomComponent):
|
|
||||||
display_name = "List Pages [Notion]"
|
display_name = "List Pages [Notion]"
|
||||||
description = (
|
description = (
|
||||||
"Query a Notion database with filtering and sorting. "
|
"Query a Notion database with filtering and sorting. "
|
||||||
|
|
@ -50,6 +53,12 @@ class NotionDatabaseQuery(CustomComponent):
|
||||||
documentation: str = "https://developers.notion.com/reference/post-database-query"
|
documentation: str = "https://developers.notion.com/reference/post-database-query"
|
||||||
icon = "NotionDirectoryLoader"
|
icon = "NotionDirectoryLoader"
|
||||||
|
|
||||||
|
field_order = [
|
||||||
|
"notion_secret",
|
||||||
|
"database_id",
|
||||||
|
"query_payload",
|
||||||
|
]
|
||||||
|
|
||||||
def build_config(self):
|
def build_config(self):
|
||||||
return {
|
return {
|
||||||
"notion_secret": {
|
"notion_secret": {
|
||||||
|
|
@ -74,8 +83,8 @@ class NotionDatabaseQuery(CustomComponent):
|
||||||
self,
|
self,
|
||||||
notion_secret: str,
|
notion_secret: str,
|
||||||
database_id: str,
|
database_id: str,
|
||||||
query_payload: str,
|
query_payload: str = "{}",
|
||||||
) -> str:
|
) -> List[Record]:
|
||||||
try:
|
try:
|
||||||
query_data = json.loads(query_payload)
|
query_data = json.loads(query_payload)
|
||||||
filter_obj = query_data.get("filter")
|
filter_obj = query_data.get("filter")
|
||||||
|
|
@ -99,34 +108,53 @@ class NotionDatabaseQuery(CustomComponent):
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
|
|
||||||
results = response.json()
|
results = response.json()
|
||||||
output = f"Pages found: {len(results['results'])}\n\n"
|
records = []
|
||||||
for page in results["results"]:
|
combined_text = f"Pages found: {len(results['results'])}\n\n"
|
||||||
output += f"Page ID: {page['id']}\n"
|
for page in results['results']:
|
||||||
output += f"Page URL: {page['url']}\n"
|
page_data = {
|
||||||
output += f"Created At: {page['created_time']}\n"
|
'id': page['id'],
|
||||||
output += f"Updated At: {page['last_edited_time']}\n"
|
'url': page['url'],
|
||||||
output += f"Properties: {json.dumps(page['properties'], indent=2)}\n\n"
|
'created_time': page['created_time'],
|
||||||
|
'last_edited_time': page['last_edited_time'],
|
||||||
|
'properties': page['properties'],
|
||||||
|
}
|
||||||
|
|
||||||
return output
|
text = (
|
||||||
|
f"id: {page['id']}\n"
|
||||||
|
f"url: {page['url']}\n"
|
||||||
|
f"created_time: {page['created_time']}\n"
|
||||||
|
f"last_edited_time: {page['last_edited_time']}\n"
|
||||||
|
f"properties: {json.dumps(page['properties'], indent=2)}\n\n"
|
||||||
|
)
|
||||||
|
|
||||||
|
combined_text += text
|
||||||
|
records.append(Record(text=text, data=page_data))
|
||||||
|
|
||||||
|
self.status = combined_text.strip()
|
||||||
|
return records
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return f"An error occurred: {str(e)}"
|
self.status = f"An error occurred: {str(e)}"
|
||||||
|
return [Record(text=self.status, data=[])]
|
||||||
```
|
```
|
||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
Here's an example of how you can use the `NotionDatabaseQuery` component in a Langflow flow and passing to the Prompt component:
|
Here's an example of how you can use the `NotionListPages
|
||||||
|
` component in a Langflow flow and passing to the Prompt component:
|
||||||
|
|
||||||
<ZoomableImage
|
<ZoomableImage
|
||||||
alt="NotionDatabaseQuery Flow Example"
|
alt="NotionListPages
|
||||||
|
Flow Example"
|
||||||
sources={{
|
sources={{
|
||||||
light: "img/notion/NotionDatabaseQuery_flow_example.png",
|
light: "img/notion/NotionListPages_flow_example.png",
|
||||||
dark: "img/notion/NotionDatabaseQuery_flow_example_dark.png",
|
dark: "img/notion/NotionListPages_flow_example_dark.png",
|
||||||
}}
|
}}
|
||||||
style={{ width: "100%", margin: "20px 0" }}
|
style={{ width: "100%", margin: "20px 0" }}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
In this example, the `NotionDatabaseQuery` component is used to retrieve specific pages from a Notion database based on the provided filters and sorting options. The retrieved data can then be processed further in the subsequent components of the flow.
|
In this example, the `NotionListPages
|
||||||
|
` component is used to retrieve specific pages from a Notion database based on the provided filters and sorting options. The retrieved data can then be processed further in the subsequent components of the flow.
|
||||||
|
|
||||||
## Best Practices
|
## Best Practices
|
||||||
|
|
||||||
|
|
@ -134,7 +162,8 @@ In this example, the `NotionDatabaseQuery` component is used to retrieve specifi
|
||||||
>
|
>
|
||||||
> ### Best Practices
|
> ### Best Practices
|
||||||
>
|
>
|
||||||
> When using the `NotionDatabaseQuery` component, consider the following best practices:
|
> When using the `NotionListPages
|
||||||
|
` component, consider the following best practices:
|
||||||
>
|
>
|
||||||
> - Ensure that you have a valid Notion integration token with the necessary permissions to query the desired database.
|
> - Ensure that you have a valid Notion integration token with the necessary permissions to query the desired database.
|
||||||
> - Construct the `query_payload` JSON string carefully, following the Notion API documentation for filtering and sorting options.
|
> - Construct the `query_payload` JSON string carefully, following the Notion API documentation for filtering and sorting options.
|
||||||
|
|
@ -145,12 +174,15 @@ In this example, the `NotionDatabaseQuery` component is used to retrieve specifi
|
||||||
>
|
>
|
||||||
> ### Troubleshooting
|
> ### Troubleshooting
|
||||||
>
|
>
|
||||||
> If you encounter any issues while using the `NotionDatabaseQuery` component, consider the following:
|
> If you encounter any issues while using the `NotionListPages
|
||||||
|
` component, consider the following:
|
||||||
>
|
>
|
||||||
> - Double-check that the `notion_secret` and `database_id` are correct and valid.
|
> - Double-check that the `notion_secret` and `database_id` are correct and valid.
|
||||||
> - Verify that the `query_payload` JSON string is properly formatted and contains valid filtering and sorting options.
|
> - Verify that the `query_payload` JSON string is properly formatted and contains valid filtering and sorting options.
|
||||||
> - Check the Notion API documentation for any updates or changes that may affect the component's functionality.
|
> - Check the Notion API documentation for any updates or changes that may affect the component's functionality.
|
||||||
|
|
||||||
The `NotionDatabaseQuery` component provides a powerful way to integrate Notion database querying capabilities into your Langflow workflows. By leveraging this component, you can easily retrieve specific pages from a Notion database based on custom filters and sorting options, enabling you to build more dynamic and data-driven flows.
|
The `NotionListPages
|
||||||
|
` component provides a powerful way to integrate Notion database querying capabilities into your Langflow workflows. By leveraging this component, you can easily retrieve specific pages from a Notion database based on custom filters and sorting options, enabling you to build more dynamic and data-driven flows.
|
||||||
|
|
||||||
We encourage you to explore the capabilities of the `NotionDatabaseQuery` component further and experiment with different querying scenarios to unlock the full potential of integrating Notion databases into your Langflow workflows.
|
We encourage you to explore the capabilities of the `NotionListPages
|
||||||
|
` component further and experiment with different querying scenarios to unlock the full potential of integrating Notion databases into your Langflow workflows.
|
||||||
|
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 62 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 61 KiB |
BIN
docs/static/img/notion/NotionListPages_flow_example.png
vendored
Normal file
BIN
docs/static/img/notion/NotionListPages_flow_example.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 28 KiB |
BIN
docs/static/img/notion/NotionListPages_flow_example_dark.png
vendored
Normal file
BIN
docs/static/img/notion/NotionListPages_flow_example_dark.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 29 KiB |
Loading…
Add table
Add a link
Reference in a new issue