Task #27 - Defined functions for creating directories for exporting as markdown

This commit is contained in:
QiTao 2020-02-08 11:24:15 -06:00
parent 617a77b809
commit 270da67977
2 changed files with 48 additions and 10 deletions

View File

@ -1,4 +1,8 @@
const Controller = require('libflitter/controller/Controller') const Controller = require('libflitter/controller/Controller')
const os = require('os');
const fs = require('fs').promises;
const uuid = require('uuid/v4');
const path = require('path');
/* /*
* Export Controller * Export Controller
@ -14,9 +18,9 @@ class Export extends Controller {
*/ */
async json_export(req, res) { async json_export(req, res) {
const Page = this.models.get('api:Page') const Page = this.models.get('api:Page')
const user = req.user
const pages = await Page.find({OrgUserId:user.id})
const Node = this.models.get('api:Node') const Node = this.models.get('api:Node')
const user = req.user
const pages = await Page.find({ OrgUserId: user._id })
const ExportData = {} const ExportData = {}
for (const page of pages) { for (const page of pages) {
@ -28,6 +32,39 @@ class Export extends Controller {
} }
return res.api(ExportData) return res.api(ExportData)
} }
async markdown_export(req, res) {
const Page = this.models.get('api:Page')
const Node = this.models.get('api:Node')
const user = req.user
const page0 = await Page.findOne({ OrgUserId: user._id, ParentId: '0' }) //Imaginary root
const temp_dir = path.resolve(os.tmpdir(), uuid())
await fs.mkdir(temp_dir)
this._markdown_recurse(page0, temp_dir)
return res.api({temp_dir})
}
async _markdown_recurse(root, temp_dir) {
console.log('root', root)
const Page = this.models.get('api:Page')
//const child = await root.childPages
const child = await Page.find({ UUID: { $in: root.ChildPageIds }})
console.log('child', child)
for (const page of child) {
const markdown = this._generate_markdown(page)
if (page.ChildPageIds && page.ChildPageIds.length) {
const sub_temp_dir = path.resolve(temp_dir, page.Name.replace(/\s/g, '_'))
console.log('page', page, 'sub_temp', sub_temp_dir)
await fs.mkdir(sub_temp_dir)
this._markdown_recurse(page, sub_temp_dir)
}
}
}
async _generate_markdown(page) {
const Node = this.models.get('api:Node')
const nodes = await Node.find({ PageId: page.UUID })
return nodes.map(x => { return x.Value.Value }).join('\n')
}
} }
module.exports = exports = Export module.exports = exports = Export

View File

@ -46,7 +46,8 @@ const index = {
// your own route protected by 'middleware::auth:UserOnly' // your own route protected by 'middleware::auth:UserOnly'
'/dash': [ 'controller::Home.welcome' ], '/dash': [ 'controller::Home.welcome' ],
'/login': [ 'middleware::auth:GuestOnly', 'controller::Home.get_login' ], '/login': [ 'middleware::auth:GuestOnly', 'controller::Home.get_login' ],
'/test-export' : ['controller::Export.json_export' ], '/test-json' : [ 'controller::Export.json_export' ],
'/test-markdown' : [ 'controller::Export.markdown_export' ]
}, },
/* /*