| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- module.exports = crowi => {
- 'use strict';
- const Page = crowi.model('Page');
- /**
- * Create posts from imported data
- * @param pages = [{
- * path: String,
- * body: String,
- * user: Object
- * }]
- */
- const createGrowiPages = (pages) => {
- let createdPages = [];
- let rejectedPages = [];
- let errors = [];
- return new Promise((resolve, reject) => {
- const promises = pages.map(page => {
- return new Promise(async(resolve, reject) => {
- const path = page.path;
- const user = page.user;
- const body = page.body;
- const isCreatableName = await Page.isCreatableName(path);
- const isPageNameTaken = await Page.findPage(path, user, null, true);
- if (isCreatableName && !isPageNameTaken) {
- try {
- await Page.create(path, body, user, { grant: Page.GRANT_PUBLIC, grantUserGroupId: null });
- createdPages.push(page);
- }
- catch (err) {
- errors.push(err);
- }
- }
- else {
- rejectedPages.push(page);
- if (!isCreatableName) {
- errors.push(new Error(`${path} is not a creatable name in Growi`));
- }
- if (isPageNameTaken) {
- errors.push(new Error(`${path} already exists in Growi`));
- }
- }
- resolve();
- });
- });
- Promise.all(promises)
- .then(() => {
- resolve({
- createdPages,
- rejectedPages,
- errors,
- });
- });
- });
- };
- return createGrowiPages;
- };
|