Merge pull request #1456 from automatisch/AUT-431
feat(notion): add updated database items trigger
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import newDatabaseItems from './new-database-items';
|
||||
import updatedDatabaseItems from './updated-database-items';
|
||||
|
||||
export default [newDatabaseItems];
|
||||
export default [newDatabaseItems, updatedDatabaseItems];
|
||||
|
@@ -0,0 +1,33 @@
|
||||
import defineTrigger from '../../../../helpers/define-trigger';
|
||||
import updatedDatabaseItems from './updated-database-items';
|
||||
|
||||
export default defineTrigger({
|
||||
name: 'Updated database items',
|
||||
key: 'updatedDatabaseItems',
|
||||
pollInterval: 15,
|
||||
description:
|
||||
'Triggers when there is an update to an item in a chosen database',
|
||||
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 updatedDatabaseItems($);
|
||||
},
|
||||
});
|
@@ -0,0 +1,51 @@
|
||||
import { IGlobalVariable } from '@automatisch/types';
|
||||
|
||||
type DatabaseItem = {
|
||||
id: string;
|
||||
last_edited_time: string;
|
||||
};
|
||||
|
||||
type ResponseData = {
|
||||
results: DatabaseItem[];
|
||||
next_cursor?: string;
|
||||
};
|
||||
|
||||
type Payload = {
|
||||
sorts: [
|
||||
{
|
||||
timestamp: 'created_time' | 'last_edited_time';
|
||||
direction: 'ascending' | 'descending';
|
||||
}
|
||||
];
|
||||
start_cursor?: string;
|
||||
};
|
||||
|
||||
const updatedDatabaseItems = async ($: IGlobalVariable) => {
|
||||
const payload: Payload = {
|
||||
sorts: [
|
||||
{
|
||||
timestamp: 'last_edited_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}-${databaseItem.last_edited_time}`,
|
||||
},
|
||||
});
|
||||
}
|
||||
} while (payload.start_cursor);
|
||||
};
|
||||
|
||||
export default updatedDatabaseItems;
|
@@ -3,6 +3,8 @@ favicon: /favicons/notion.svg
|
||||
items:
|
||||
- name: New database items
|
||||
desc: Triggers when a new database item is created.
|
||||
- name: Updated database items
|
||||
desc: Triggers when there is an update to an item in a chosen database.
|
||||
---
|
||||
|
||||
<script setup>
|
||||
|
Reference in New Issue
Block a user