feat(notion): add updated database items trigger
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
import newDatabaseItems from './new-database-items';
|
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:
|
items:
|
||||||
- name: New database items
|
- name: New database items
|
||||||
desc: Triggers when a new database item is created.
|
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>
|
<script setup>
|
||||||
|
Reference in New Issue
Block a user