mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-13 07:46:06 +00:00
30 lines
940 B
JavaScript
30 lines
940 B
JavaScript
import cloneDeep from 'lodash/cloneDeep'
|
|
|
|
const _includeFieldsRecursively = (selectionSet, includedFields) => {
|
|
if (!selectionSet) return
|
|
includedFields.forEach(includedField => {
|
|
selectionSet.selections.unshift({
|
|
kind: 'Field',
|
|
name: { kind: 'Name', value: includedField },
|
|
})
|
|
})
|
|
selectionSet.selections.forEach(selection => {
|
|
_includeFieldsRecursively(selection.selectionSet, includedFields)
|
|
})
|
|
}
|
|
|
|
const includeFieldsRecursively = includedFields => {
|
|
return (resolve, root, args, context, resolveInfo) => {
|
|
const copy = cloneDeep(resolveInfo)
|
|
copy.fieldNodes.forEach(fieldNode => {
|
|
_includeFieldsRecursively(fieldNode.selectionSet, includedFields)
|
|
})
|
|
return resolve(root, args, context, copy)
|
|
}
|
|
}
|
|
|
|
export default {
|
|
Query: includeFieldsRecursively(['id', 'createdAt', 'disabled', 'deleted']),
|
|
Mutation: includeFieldsRecursively(['id', 'createdAt', 'disabled', 'deleted']),
|
|
}
|