feat(Notion Node): Fetch child blocks recursively (#7304)

Github issue / Community forum post (link here to close automatically):
This commit is contained in:
Michael Kret
2023-10-06 14:55:44 +03:00
committed by GitHub
parent 97bb703d0a
commit 193181a9c6
3 changed files with 69 additions and 3 deletions

View File

@@ -81,7 +81,6 @@ export async function notionApiRequestAllItems(
propertyName: string,
method: string,
endpoint: string,
body: any = {},
query: IDataObject = {},
): Promise<any> {
@@ -109,6 +108,48 @@ export async function notionApiRequestAllItems(
return returnData;
}
export async function notionApiRequestGetBlockChildrens(
this: IExecuteFunctions | ILoadOptionsFunctions | IPollFunctions,
blocks: IDataObject[],
responseData: IDataObject[] = [],
limit?: number,
) {
if (blocks.length === 0) return responseData;
for (const block of blocks) {
responseData.push(block);
if (block.type === 'child_page') continue;
if (block.has_children) {
let childrens = await notionApiRequestAllItems.call(
this,
'results',
'GET',
`/blocks/${block.id}/children`,
);
childrens = (childrens || []).map((entry: IDataObject) => ({
object: entry.object,
parent_id: block.id,
...entry,
}));
await notionApiRequestGetBlockChildrens.call(this, childrens, responseData);
}
if (limit && responseData.length === limit) {
return responseData;
}
if (limit && responseData.length > limit) {
return responseData.slice(0, limit);
}
}
return responseData;
}
export function getBlockTypes() {
return [
{