|
|
@@ -6,7 +6,6 @@ module.exports = crowi => {
|
|
|
|
|
|
const logger = require('@alias/logger')('growi:util:importer');
|
|
|
const esa = require('esa-nodejs');
|
|
|
- const User = crowi.model('User');
|
|
|
const config = crowi.getConfig();
|
|
|
const createGrowiPages = require('./createGrowiPagesFromImports')(crowi);
|
|
|
let importer = {};
|
|
|
@@ -28,17 +27,16 @@ module.exports = crowi => {
|
|
|
*/
|
|
|
importer.importDataFromEsa = user => {
|
|
|
return new Promise(async(resolve, reject) => {
|
|
|
- const rawData = await getAllPostsFromEsa([], 1);
|
|
|
- const data = convertEsaDataForGrowi(rawData, user);
|
|
|
- const result = await createGrowiPages(data, user);
|
|
|
+ const firstPage = 1;
|
|
|
+ const errors = await importPostsFromEsa(firstPage, user, []);
|
|
|
|
|
|
- resolve(result);
|
|
|
+ resolve(errors);
|
|
|
});
|
|
|
};
|
|
|
|
|
|
- const getAllPostsFromEsa = (pagesSoFar, pageNum) => {
|
|
|
+ const importPostsFromEsa = (pageNum, user, errors) => {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
- esaClient.api.posts({page: pageNum, per_page: 100}, (err, res) => {
|
|
|
+ esaClient.api.posts({page: pageNum, per_page: 100}, async(err, res) => {
|
|
|
const nextPage = res.body.next_page;
|
|
|
const postsReceived = res.body.posts;
|
|
|
|
|
|
@@ -46,12 +44,14 @@ module.exports = crowi => {
|
|
|
reject(`error in page ${pageNum}: ${err}`);
|
|
|
}
|
|
|
|
|
|
+ const data = convertEsaDataForGrowi(postsReceived, user);
|
|
|
+ const newErrors = await createGrowiPages(data);
|
|
|
+
|
|
|
if (nextPage) {
|
|
|
- return resolve(getAllPostsFromEsa(pagesSoFar.concat(postsReceived), nextPage));
|
|
|
- }
|
|
|
- else {
|
|
|
- return resolve(pagesSoFar.concat(postsReceived));
|
|
|
+ return resolve(importPostsFromEsa(nextPage, user, errors.concat(newErrors)));
|
|
|
}
|
|
|
+
|
|
|
+ resolve(errors.concat(newErrors));
|
|
|
});
|
|
|
});
|
|
|
};
|
|
|
@@ -59,9 +59,9 @@ module.exports = crowi => {
|
|
|
/**
|
|
|
* Convert data into usable format for createGrowiPagesFromImports
|
|
|
*/
|
|
|
- const convertEsaDataForGrowi = (rawData, user) => {
|
|
|
+ const convertEsaDataForGrowi = (pages, user) => {
|
|
|
const basePage = '';
|
|
|
- const data = rawData.map(post => {
|
|
|
+ const data = pages.map(post => {
|
|
|
const category = post.category;
|
|
|
const name = post.name;
|
|
|
let path = '';
|