-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnotionApiCalls.js
108 lines (100 loc) · 2.74 KB
/
notionApiCalls.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
const { Client } = require('@notionhq/client');
const functions = require('./functions.js');
require('dotenv').config();
const notion = new Client({ auth: process.env.NOTION_API_KEY });
const databaseId = process.env.NOTION_DATABASE_ID;
module.exports = { createNotionEvent, updateDatabaseNotion, queryDatabaseNotion };
/**
* Add a calendar event (icalEvent) to the Notion database (databaseId).
*/
async function createNotionEvent(icalEvent, startTimeBarcelona, endTimeBarcelona) {
const response = await notion.pages.create({
parent: {
database_id: databaseId
},
icon: {
type: 'emoji',
emoji: '🗒️'
},
properties: {
title: {
title: [
{
text: {
content: icalEvent.summary
}
}
]
},
Date: {
date: {
start: startTimeBarcelona,
end: endTimeBarcelona
}
},
Id: {
rich_text: [
{
text: {
content: icalEvent.uid
}
}
]
}
}
}) // read more into catching API calls and why handle each error differently
.catch((error) => {
console.error(error)
process.exit(0);
});
return response;
}
/**
* Returns Notion id page from databaseId to be modified
*/
async function queryDatabaseNotion(icalEvent) {
const response = await notion.databases.query({
database_id: databaseId,
filter: {
property: 'Id',
rich_text: {
equals: icalEvent.uid
}
}
})
.catch((error) => {
console.error(error)
process.exit(0);
});
return response;
}
/**
* Updates a Notion page (notionPageId) with the icalEvent data
*/
async function updateDatabaseNotion(icalEvent, notionPageId, startTimeBarcelona, endTimeBarcelona) {
const response = await notion.pages.update({
page_id: notionPageId,
properties: {
title: {
title: [
{
text: {
content: icalEvent.summary
}
}
]
},
Date: {
date: {
start: startTimeBarcelona,
end: endTimeBarcelona
}
}
}
})
.catch((error) => {
console.error(error)
process.exit(0);
});
return response;
}