|
|
@ -246,14 +246,31 @@ module.exports = { |
|
|
|
* FETCH PAGE LINKS |
|
|
|
*/ |
|
|
|
async links (obj, args, context, info) { |
|
|
|
let results = [] |
|
|
|
let results; |
|
|
|
|
|
|
|
results = await WIKI.models.knex('pages') |
|
|
|
.column({ id: 'pages.id' }, { path: 'pages.path' }, 'title', { link: 'pageLinks.path' }, { locale: 'pageLinks.localeCode' }) |
|
|
|
.fullOuterJoin('pageLinks', 'pages.id', 'pageLinks.pageId') |
|
|
|
.where({ |
|
|
|
'pages.localeCode': args.locale |
|
|
|
}) |
|
|
|
if (WIKI.config.db.type === 'mysql' || WIKI.config.db.type === 'mariadb' || WIKI.config.db.type === 'sqlite') { |
|
|
|
results = await WIKI.models.knex('pages') |
|
|
|
.column({ id: 'pages.id' }, { path: 'pages.path' }, 'title', { link: 'pageLinks.path' }, { locale: 'pageLinks.localeCode' }) |
|
|
|
.leftJoin('pageLinks', 'pages.id', 'pageLinks.pageId') |
|
|
|
.where({ |
|
|
|
'pages.localeCode': args.locale |
|
|
|
}) |
|
|
|
.unionAll( |
|
|
|
WIKI.models.knex('pageLinks') |
|
|
|
.column({ id: 'pages.id' }, { path: 'pages.path' }, 'title', { link: 'pageLinks.path' }, { locale: 'pageLinks.localeCode' }) |
|
|
|
.leftJoin('pages', 'pageLinks.pageId', 'pages.id') |
|
|
|
.where({ |
|
|
|
'pages.localeCode': args.locale |
|
|
|
}) |
|
|
|
) |
|
|
|
} else { |
|
|
|
results = await WIKI.models.knex('pages') |
|
|
|
.column({ id: 'pages.id' }, { path: 'pages.path' }, 'title', { link: 'pageLinks.path' }, { locale: 'pageLinks.localeCode' }) |
|
|
|
.fullOuterJoin('pageLinks', 'pages.id', 'pageLinks.pageId') |
|
|
|
.where({ |
|
|
|
'pages.localeCode': args.locale |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
return _.reduce(results, (result, val) => { |
|
|
|
// -> Check if user has access to source and linked page
|
|
|
|