feat(notion): add create database item action
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
import { IJSONArray, IJSONObject } from '@automatisch/types';
|
||||
import defineAction from '../../../../helpers/define-action';
|
||||
|
||||
type TBody = {
|
||||
parent: IJSONObject;
|
||||
properties: IJSONObject;
|
||||
children: IJSONArray;
|
||||
};
|
||||
|
||||
export default defineAction({
|
||||
name: 'Create Database Item',
|
||||
key: 'createDatabaseItem',
|
||||
description: 'Creates an item in a database.',
|
||||
arguments: [
|
||||
{
|
||||
label: 'Database',
|
||||
key: 'databaseId',
|
||||
type: 'dropdown' as const,
|
||||
required: true,
|
||||
source: {
|
||||
type: 'query',
|
||||
name: 'getDynamicData',
|
||||
arguments: [
|
||||
{
|
||||
name: 'key',
|
||||
value: 'listDatabases',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'Name',
|
||||
key: 'name',
|
||||
type: 'string' as const,
|
||||
required: false,
|
||||
description:
|
||||
'This field has a 2000 character limit. Any characters beyond 2000 will not be included.',
|
||||
variables: true,
|
||||
},
|
||||
{
|
||||
label: 'Content',
|
||||
key: 'content',
|
||||
type: 'string' as const,
|
||||
required: false,
|
||||
description:
|
||||
'The text to add to the page body. The max length for this field is 2000 characters. Any characters beyond 2000 will not be included.',
|
||||
variables: true,
|
||||
},
|
||||
],
|
||||
|
||||
async run($) {
|
||||
const name = $.step.parameters.name as string;
|
||||
const truncatedName = name.slice(0, 2000);
|
||||
const content = $.step.parameters.content as string;
|
||||
const truncatedContent = content.slice(0, 2000);
|
||||
|
||||
const body: TBody = {
|
||||
parent: {
|
||||
database_id: $.step.parameters.databaseId,
|
||||
},
|
||||
properties: {},
|
||||
children: [],
|
||||
};
|
||||
|
||||
if (name) {
|
||||
body.properties.Name = {
|
||||
title: [
|
||||
{
|
||||
text: {
|
||||
content: truncatedName,
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
}
|
||||
|
||||
if (content) {
|
||||
body.children = [
|
||||
{
|
||||
object: 'block',
|
||||
paragraph: {
|
||||
rich_text: [
|
||||
{
|
||||
text: {
|
||||
content: truncatedContent,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
const { data } = await $.http.post('/v1/pages', body);
|
||||
|
||||
$.setActionItem({
|
||||
raw: data,
|
||||
});
|
||||
},
|
||||
});
|
Reference in New Issue
Block a user