|
@@ -61,31 +61,42 @@ module.exports = crowi => {
|
|
|
* Create posts from imported data
|
|
* Create posts from imported data
|
|
|
*/
|
|
*/
|
|
|
const createGrowiPages = (pages, user) => {
|
|
const createGrowiPages = (pages, user) => {
|
|
|
|
|
+ const basePage = '/';
|
|
|
|
|
+ let createdPages = [];
|
|
|
|
|
+ let rejectedPages = [];
|
|
|
|
|
+ let errors = [];
|
|
|
|
|
+
|
|
|
return new Promise((resolve, reject) => {
|
|
return new Promise((resolve, reject) => {
|
|
|
- const basePage = '/';
|
|
|
|
|
- const ignoreNotFound = true;
|
|
|
|
|
- pages.forEach(post => {
|
|
|
|
|
- const pagePath = basePage + [post.category, post.name].filter(v => v).join('/');
|
|
|
|
|
- Page.findPage(pagePath, user, null, ignoreNotFound)
|
|
|
|
|
- .then(data => {
|
|
|
|
|
- if (data !== null) {
|
|
|
|
|
- return reject('Page exists');
|
|
|
|
|
- }
|
|
|
|
|
- if (!Page.isCreatableName(pagePath)) {
|
|
|
|
|
- return reject(`Page name '${pagePath}' is not allowed in Growi`);
|
|
|
|
|
|
|
+ const promises = pages.map(page => {
|
|
|
|
|
+ return new Promise(async(resolve, reject) => {
|
|
|
|
|
+ const pagePath = basePage + [page.category, page.name].filter(v => v).join('/');
|
|
|
|
|
+ const isCreatableName = await Page.isCreatableName(pagePath);
|
|
|
|
|
+ const isPageNameTaken = await Page.findPage(pagePath, user, null, true);
|
|
|
|
|
+
|
|
|
|
|
+ if (isCreatableName && !isPageNameTaken) {
|
|
|
|
|
+ await Page.create(pagePath, page.body_md, user, { grant: Page.GRANT_PUBLIC, grantUserGroupId: null });
|
|
|
|
|
+ createdPages.push(page);
|
|
|
}
|
|
}
|
|
|
- return Page.create(pagePath, post.body_md, user, { grant: Page.GRANT_PUBLIC, grantUserGroupId: null });
|
|
|
|
|
- })
|
|
|
|
|
- .then(createdPage => {
|
|
|
|
|
- if (!createdPage) {
|
|
|
|
|
- return reject('Page exists');
|
|
|
|
|
|
|
+ else {
|
|
|
|
|
+ rejectedPages.push(page);
|
|
|
|
|
+ if (!isCreatableName) {
|
|
|
|
|
+ errors.push(new Error(`${pagePath} is not a creatable name in Growi`));
|
|
|
|
|
+ }
|
|
|
|
|
+ if (isPageNameTaken) {
|
|
|
|
|
+ errors.push(new Error(`${pagePath} already exists in Growi`));
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
- debug('Crete page: ' + createdPage);
|
|
|
|
|
|
|
+
|
|
|
resolve();
|
|
resolve();
|
|
|
- })
|
|
|
|
|
- .catch(err => {
|
|
|
|
|
- debug(err);
|
|
|
|
|
- return reject(err);
|
|
|
|
|
|
|
+ });
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ Promise.all(promises)
|
|
|
|
|
+ .then(() => {
|
|
|
|
|
+ resolve({
|
|
|
|
|
+ createdPages,
|
|
|
|
|
+ rejectedPages,
|
|
|
|
|
+ errors,
|
|
|
});
|
|
});
|
|
|
});
|
|
});
|
|
|
});
|
|
});
|