chore: separates graphql package out for schema generation

This commit is contained in:
Jarrod Flesch
2024-02-07 16:38:01 -05:00
parent 166fce793f
commit 86bfc0a7f9
75 changed files with 220 additions and 108 deletions

View File

@@ -0,0 +1,81 @@
import type { FieldWithSubFields, TabsField } from 'payload/types'
import { fieldAffectsData, fieldIsPresentationalOnly } from 'payload/types'
import fieldToSchemaMap from './fieldToWhereInputSchemaMap'
type Args = {
field: FieldWithSubFields | TabsField
nestedFieldName2: string
parentName: string
}
const recursivelyBuildNestedPaths = ({ field, nestedFieldName2, parentName }: Args) => {
const fieldName = fieldAffectsData(field) ? field.name : undefined
const nestedFieldName = fieldName || nestedFieldName2
if (field.type === 'tabs') {
// if the tab has a name, treat it as a group
// otherwise, treat it as a row
return field.tabs.reduce((tabSchema, tab: any) => {
tabSchema.push(
...recursivelyBuildNestedPaths({
field: {
...tab,
type: 'name' in tab ? 'group' : 'row',
},
nestedFieldName2: nestedFieldName,
parentName,
}),
)
return tabSchema
}, [])
}
const nestedPaths = field.fields.reduce((nestedFields, nestedField) => {
if (!fieldIsPresentationalOnly(nestedField)) {
if (!fieldAffectsData(nestedField)) {
return [
...nestedFields,
...recursivelyBuildNestedPaths({
field: nestedField,
nestedFieldName2: nestedFieldName,
parentName,
}),
]
}
const nestedPathName = fieldAffectsData(nestedField)
? `${nestedFieldName ? `${nestedFieldName}__` : ''}${nestedField.name}`
: undefined
const getFieldSchema = fieldToSchemaMap({
nestedFieldName,
parentName,
})[nestedField.type]
if (getFieldSchema) {
const fieldSchema = getFieldSchema({
...nestedField,
name: nestedPathName,
})
if (Array.isArray(fieldSchema)) {
return [...nestedFields, ...fieldSchema]
}
return [
...nestedFields,
{
key: nestedPathName,
type: fieldSchema,
},
]
}
}
return nestedFields
}, [])
return nestedPaths
}
export default recursivelyBuildNestedPaths