mirror of
				https://github.com/strapi/strapi.git
				synced 2025-10-31 09:56:44 +00:00 
			
		
		
		
	Use a symbol to pass options add make it work with many before fixing them
Signed-off-by: Alexandre Bodin <bodin.alex@gmail.com>
This commit is contained in:
		
							parent
							
								
									60b52cf946
								
							
						
					
					
						commit
						fcb2878987
					
				| @ -14,6 +14,8 @@ const { | |||||||
|   constants: { DP_PUB_STATE_LIVE }, |   constants: { DP_PUB_STATE_LIVE }, | ||||||
| } = contentTypes; | } = contentTypes; | ||||||
| 
 | 
 | ||||||
|  | const OPTIONS = Symbol(); | ||||||
|  | 
 | ||||||
| const DynamicZoneScalar = require('../types/dynamiczoneScalar'); | const DynamicZoneScalar = require('../types/dynamiczoneScalar'); | ||||||
| 
 | 
 | ||||||
| const { formatModelConnectionsGQL } = require('./build-aggregation'); | const { formatModelConnectionsGQL } = require('./build-aggregation'); | ||||||
| @ -29,7 +31,7 @@ const assignOptions = (element, parent) => { | |||||||
|     return element.map(el => assignOptions(el, parent)); |     return element.map(el => assignOptions(el, parent)); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   return _.set(element, '__options__', _.get(parent, '__options__', {})); |   return _.set(element, OPTIONS, _.get(parent, OPTIONS, {})); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| const isQueryEnabled = (schema, name) => { | const isQueryEnabled = (schema, name) => { | ||||||
| @ -146,6 +148,16 @@ const generateDynamicZoneDefinitions = (attributes, globalId, schema) => { | |||||||
|     }); |     }); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | const initQueryOptions = (targetModel, parent) => { | ||||||
|  |   if (hasDraftAndPublish(targetModel)) { | ||||||
|  |     return { | ||||||
|  |       _publicationState: _.get(parent, [OPTIONS, 'publicationState'], DP_PUB_STATE_LIVE), | ||||||
|  |     }; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   return {}; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
| const buildAssocResolvers = model => { | const buildAssocResolvers = model => { | ||||||
|   const contentManager = strapi.plugins['content-manager'].services['contentmanager']; |   const contentManager = strapi.plugins['content-manager'].services['contentmanager']; | ||||||
| 
 | 
 | ||||||
| @ -168,11 +180,14 @@ const buildAssocResolvers = model => { | |||||||
|               return obj[association.alias]; |               return obj[association.alias]; | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|  |             const queryOpts = initQueryOptions(targetModel, obj); | ||||||
|  | 
 | ||||||
|             const entry = await contentManager.fetch(model.uid, obj[primaryKey], { |             const entry = await contentManager.fetch(model.uid, obj[primaryKey], { | ||||||
|  |               query: queryOpts, | ||||||
|               populate: [association.alias], |               populate: [association.alias], | ||||||
|             }); |             }); | ||||||
| 
 | 
 | ||||||
|             return entry[association.alias]; |             return assignOptions(entry[association.alias], obj); | ||||||
|           }; |           }; | ||||||
|           break; |           break; | ||||||
|         } |         } | ||||||
| @ -183,15 +198,7 @@ const buildAssocResolvers = model => { | |||||||
|               model: targetModel.uid, |               model: targetModel.uid, | ||||||
|             }; |             }; | ||||||
| 
 | 
 | ||||||
|             let queryOpts = { |             let queryOpts = initQueryOptions(targetModel, obj); | ||||||
|               ...obj.__options__, |  | ||||||
|             }; |  | ||||||
| 
 |  | ||||||
|             if (hasDraftAndPublish(targetModel)) { |  | ||||||
|               _.assign(queryOpts, { |  | ||||||
|                 _publicationState: queryOpts._publicationState || DP_PUB_STATE_LIVE, |  | ||||||
|               }); |  | ||||||
|             } |  | ||||||
| 
 | 
 | ||||||
|             if (association.type === 'model') { |             if (association.type === 'model') { | ||||||
|               params[targetModel.primaryKey] = _.get( |               params[targetModel.primaryKey] = _.get( | ||||||
| @ -224,8 +231,6 @@ const buildAssocResolvers = model => { | |||||||
|               } |               } | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             console.log(queryOpts); |  | ||||||
| 
 |  | ||||||
|             const results = association.model |             const results = association.model | ||||||
|               ? await strapi.plugins.graphql.services['data-loaders'].loaders[targetModel.uid].load( |               ? await strapi.plugins.graphql.services['data-loaders'].loaders[targetModel.uid].load( | ||||||
|                   { |                   { | ||||||
| @ -439,8 +444,8 @@ const buildCollectionType = model => { | |||||||
|             [pluralName]: async (parent, args, ctx, ast) => { |             [pluralName]: async (parent, args, ctx, ast) => { | ||||||
|               const results = await buildQuery(pluralName, resolverOpts)(parent, args, ctx, ast); |               const results = await buildQuery(pluralName, resolverOpts)(parent, args, ctx, ast); | ||||||
| 
 | 
 | ||||||
|               const __options__ = _.pick(args, 'publicationState'); |               const queryOptions = _.pick(args, 'publicationState'); | ||||||
|               return assignOptions(results, { __options__ }); |               return assignOptions(results, { [OPTIONS]: queryOptions }); | ||||||
|             }, |             }, | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Alexandre Bodin
						Alexandre Bodin