fix: GraphQL error with MySQL and FULL OUTER JOIN (#2104)
* fix: GraphQL error with MySQL and FULL OUTER JOIN #2071
This commit is contained in:
parent
6ef7b0f130
commit
33a9d5774c
@ -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;
|
||||||
|
|
||||||
|
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')
|
results = await WIKI.models.knex('pages')
|
||||||
.column({ id: 'pages.id' }, { path: 'pages.path' }, 'title', { link: 'pageLinks.path' }, { locale: 'pageLinks.localeCode' })
|
.column({ id: 'pages.id' }, { path: 'pages.path' }, 'title', { link: 'pageLinks.path' }, { locale: 'pageLinks.localeCode' })
|
||||||
.fullOuterJoin('pageLinks', 'pages.id', 'pageLinks.pageId')
|
.fullOuterJoin('pageLinks', 'pages.id', 'pageLinks.pageId')
|
||||||
.where({
|
.where({
|
||||||
'pages.localeCode': args.locale
|
'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…
Reference in New Issue
Block a user