|
@@ -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
|