Problem
In packages/gqlorm/src/generator/graphqlGenerator.ts, the #getGraphQLFieldName method generates the GraphQL field name for findMany operations using a naive ${model}s string append:
case 'findMany':
// TODO: Use Cedar's pluralization function
// Simple pluralization
return `${model}s`
This will produce incorrect results for irregular plurals (e.g. Person → Persons instead of People, Datum → Datums instead of Data, Category → Categorys instead of Categories).
Cedar already has a proper pluralization function in packages/utils/src/cedarPluralize.ts (which wraps the pluralize npm package and adds support for PascalCased multi-word identifiers).
Fix
- Add
@cedarjs/utils to packages/gqlorm/package.json dependencies
- Import
pluralize from @cedarjs/utils (or @cedarjs/utils/cedarPluralize) in graphqlGenerator.ts
- Replace
${model}s with pluralize(model)
import { pluralize } from '@cedarjs/utils'
// ...
case 'findMany':
return pluralize(model)
Note: cedarPluralize.ts#pluralize already handles PascalCase correctly (e.g. OrderItem → OrderItems, FooBarBaz → FooBarBazs... actually it pluralizes only the last word), so the behavior should be correct for typical Prisma model names.
Files to change
packages/gqlorm/src/generator/graphqlGenerator.ts — replace naive pluralization
packages/gqlorm/package.json — add @cedarjs/utils dependency
packages/gqlorm/src/generator/__tests__/ — add test cases for irregular plurals
Problem
In
packages/gqlorm/src/generator/graphqlGenerator.ts, the#getGraphQLFieldNamemethod generates the GraphQL field name forfindManyoperations using a naive${model}sstring append:This will produce incorrect results for irregular plurals (e.g.
Person→Personsinstead ofPeople,Datum→Datumsinstead ofData,Category→Categorysinstead ofCategories).Cedar already has a proper pluralization function in
packages/utils/src/cedarPluralize.ts(which wraps thepluralizenpm package and adds support for PascalCased multi-word identifiers).Fix
@cedarjs/utilstopackages/gqlorm/package.jsondependenciespluralizefrom@cedarjs/utils(or@cedarjs/utils/cedarPluralize) ingraphqlGenerator.ts${model}swithpluralize(model)Note:
cedarPluralize.ts#pluralizealready handles PascalCase correctly (e.g.OrderItem→OrderItems,FooBarBaz→FooBarBazs... actually it pluralizes only the last word), so the behavior should be correct for typical Prisma model names.Files to change
packages/gqlorm/src/generator/graphqlGenerator.ts— replace naive pluralizationpackages/gqlorm/package.json— add@cedarjs/utilsdependencypackages/gqlorm/src/generator/__tests__/— add test cases for irregular plurals