import { parseFile } from '../file/util.mjs' import { parseArticle, parseArticles } from '../article/util.mjs' export async function getTree(ctx) { let res = await ctx.db.safeCallProc('common.pages_get_tree', []) let out = [] let children = [] let map = new Map() for (let page of res.first) { if (!page.parent_id) { out.push(page) } else { children.push(page) } map.set(page.id, page) } for (let page of children) { let parent = map.get(page.parent_id) if (!parent.children) { parent.children = [] } parent.children.push(page) } return { tree: out } } export async function getPage(ctx, path, page = 0, per_page = 10) { let res = await ctx.db.safeCallProc('common.pages_get_single', [path, page, per_page]) let articleMap = new Map() let out = { page: res.results[0][0] || null, articles: parseArticles(res.results[1]), total_articles: res.results[2][0].total_articles, featured: parseArticle(res.results[4][0]), } out.articles.forEach(article => { article.files = [] articleMap.set(article.id, article) }) res.results[3].forEach(file => { articleMap.get(file.id).files.push(parseFile(file)) }) return out }