-
Notifications
You must be signed in to change notification settings - Fork 0
/
gridsome.server.js
49 lines (41 loc) · 1.55 KB
/
gridsome.server.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
const axios = require('axios')
// Server API makes it possible to hook into various parts of Gridsome
// on server-side and add custom data to the GraphQL data layer.
// Learn more: https://gridsome.org/docs/server-api/
// Changes here require a server restart.
// To restart press CTRL + C in terminal and run `gridsome develop`
module.exports = function (api) {
api.loadSource(async ({ addCollection }) => {
// Use the Data Store API here: https://gridsome.org/docs/data-store-api/
const collection = addCollection('Note')
if ('NOTES_API_URL' in process.env) {
console.log('Importing Notes content from API: ' + process.env.NOTES_API_URL)
const { data } = await axios.get(`${process.env.NOTES_API_URL}?format=json&${process.env.NOTES_API_KEY}`)
console.log(`Notes content: ${data.length} items`)
for (const item of data) {
console.log(`Content from API: ${item.slug}`)
const content = await axios.get(item.url).then(res => res.data)
collection.addNode({
id: item.slug,
title: item.title,
date: item.date,
type: item.data.type || 'text',
source: item.data.source || '',
content: content,
})
}
} else {
collection.addNode({
id: 'test',
title: 'Test Title',
date: '2021-01-01',
type: 'link',
source: 'https://www.example.com',
content: `markdown`
})
}
})
api.createPages(({ createPage }) => {
// Use the Pages API here: https://gridsome.org/docs/pages-api/
})
}