feat(notion): add auth and new DB items trigger

This commit is contained in:
Ali BARIN
2023-06-12 22:45:37 +00:00
parent f2dc2f5530
commit 6be8b55daa
15 changed files with 351 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
import newDatabaseItems from './new-database-items';
export default [newDatabaseItems];

View File

@@ -0,0 +1,32 @@
import defineTrigger from '../../../../helpers/define-trigger';
import newDatabaseItems from './new-database-items';
export default defineTrigger({
name: 'New database items',
key: 'newDatabaseItems',
pollInterval: 15,
description: 'Triggers when a new database item is created',
arguments: [
{
label: 'Database',
key: 'databaseId',
type: 'dropdown' as const,
required: false,
variables: false,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listDatabases',
},
],
},
},
],
async run($) {
await newDatabaseItems($);
},
});

View File

@@ -0,0 +1,50 @@
import { IGlobalVariable } from '@automatisch/types';
type DatabaseItem = {
id: string;
}
type ResponseData = {
results: DatabaseItem[];
next_cursor?: string;
}
type Payload = {
sorts: [
{
timestamp: 'created_time' | 'last_edited_time';
direction: 'ascending' | 'descending';
}
];
start_cursor?: string;
};
const newDatabaseItems = async ($: IGlobalVariable) => {
const payload: Payload = {
sorts: [
{
timestamp: 'created_time',
direction: 'descending'
}
],
};
const databaseId = $.step.parameters.databaseId as string;
const path = `/v1/databases/${databaseId}/query`;
do {
const response = await $.http.post<ResponseData>(path, payload);
payload.start_cursor = response.data.next_cursor;
for (const databaseItem of response.data.results) {
$.pushTriggerItem({
raw: databaseItem,
meta: {
internalId: databaseItem.id,
}
})
}
} while (payload.start_cursor);
};
export default newDatabaseItems;