Browse Source

fix: GraphQL error with MySQL and FULL OUTER JOIN (#2104)

* fix: GraphQL error with MySQL and FULL OUTER JOIN #2071
pull/2109/head
Regev Brody 4 years ago
committed by GitHub
parent
commit
33a9d5774c
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 24 additions and 7 deletions
  1. 31
      server/graph/resolvers/page.js

31
server/graph/resolvers/page.js

@ -246,14 +246,31 @@ module.exports = {
* FETCH PAGE LINKS * FETCH PAGE LINKS
*/ */
async links (obj, args, context, info) { 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) => { return _.reduce(results, (result, val) => {
// -> Check if user has access to source and linked page // -> Check if user has access to source and linked page

Loading…
Cancel
Save