Skip to content
This repository was archived by the owner on Apr 17, 2023. It is now read-only.

Commit 625a513

Browse files
author
Enda Phelan
committed
fix(codegen-schema): map String list to String list in input type
1 parent f74c958 commit 625a513

File tree

4 files changed

+166
-3
lines changed

4 files changed

+166
-3
lines changed

packages/graphback-codegen-schema/src/definitions/schemaDefinitions.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* eslint-disable max-lines */
2-
import { GraphQLInputObjectType, GraphQLList, GraphQLBoolean, GraphQLInt, GraphQLString, GraphQLID, GraphQLEnumType, GraphQLObjectType, GraphQLNonNull, GraphQLField, getNamedType, isScalarType, GraphQLInputFieldMap, GraphQLScalarType, GraphQLNamedType, GraphQLInputField, isEnumType, isObjectType, isInputObjectType, GraphQLInputType, getNullableType } from "graphql";
2+
import { GraphQLInputObjectType, GraphQLList, GraphQLBoolean, GraphQLInt, GraphQLString, GraphQLID, GraphQLEnumType, GraphQLObjectType, GraphQLNonNull, GraphQLField, getNamedType, isScalarType, GraphQLInputFieldMap, GraphQLScalarType, GraphQLNamedType, GraphQLInputField, isEnumType, isObjectType, isInputObjectType, GraphQLInputType, getNullableType, isListType } from "graphql";
33
import { GraphbackOperationType, getInputTypeName, getInputFieldName, getInputFieldTypeName, isOneToManyField, getPrimaryKey, metadataMap, ModelDefinition, FILTER_SUPPORTED_SCALARS, isTransientField, isAutoPrimaryKey } from '@graphback/core';
44
import { SchemaComposer } from 'graphql-compose';
55
import { copyWrappingType } from './copyWrappingType';
@@ -265,10 +265,14 @@ export const buildMutationInputType = (schemaComposer: SchemaComposer<any>, mode
265265
fields: () => {
266266
const fields: any = {};
267267
for (const { name, type } of allModelFields) {
268-
let fieldType: GraphQLNamedType
268+
let fieldType: GraphQLInputType
269269

270270
if (name !== idField.name) {
271-
fieldType = getNamedType(type);
271+
fieldType = getNullableType(type);
272+
}
273+
274+
if (isListType(fieldType)) {
275+
fieldType = GraphQLList(getNamedType(fieldType))
272276
}
273277

274278
fields[name] = {

packages/graphback-codegen-schema/tests/__snapshots__/GraphQLSchemaCreator.test.ts.snap

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,15 +99,18 @@ Object {
9999
"createComment": [Function],
100100
"createFix": [Function],
101101
"createIssue": [Function],
102+
"createModelWithArrayScalar": [Function],
102103
"createModelWithTransientField": [Function],
103104
"createNote": [Function],
104105
"createTest": [Function],
105106
"createVersioned": [Function],
106107
"deleteComment": [Function],
108+
"deleteModelWithArrayScalar": [Function],
107109
"deleteModelWithTransientField": [Function],
108110
"deleteNote": [Function],
109111
"deleteTest": [Function],
110112
"updateComment": [Function],
113+
"updateModelWithArrayScalar": [Function],
111114
"updateModelWithTransientField": [Function],
112115
"updateNote": [Function],
113116
"updateTest": [Function],
@@ -119,11 +122,13 @@ Object {
119122
},
120123
"Query": Object {
121124
"findComments": [Function],
125+
"findModelWithArrayScalars": [Function],
122126
"findModelWithTransientFields": [Function],
123127
"findNotes": [Function],
124128
"findTests": [Function],
125129
"findVersioneds": [Function],
126130
"getComment": [Function],
131+
"getModelWithArrayScalar": [Function],
127132
"getModelWithTransientField": [Function],
128133
"getNote": [Function],
129134
"getTest": [Function],
@@ -132,6 +137,9 @@ Object {
132137
"deletedComment": Object {
133138
"subscribe": [Function],
134139
},
140+
"deletedModelWithArrayScalar": Object {
141+
"subscribe": [Function],
142+
},
135143
"deletedModelWithTransientField": Object {
136144
"subscribe": [Function],
137145
},
@@ -144,6 +152,9 @@ Object {
144152
"newComment": Object {
145153
"subscribe": [Function],
146154
},
155+
"newModelWithArrayScalar": Object {
156+
"subscribe": [Function],
157+
},
147158
"newModelWithTransientField": Object {
148159
"subscribe": [Function],
149160
},
@@ -156,6 +167,9 @@ Object {
156167
"updatedComment": Object {
157168
"subscribe": [Function],
158169
},
170+
"updatedModelWithArrayScalar": Object {
171+
"subscribe": [Function],
172+
},
159173
"updatedModelWithTransientField": Object {
160174
"subscribe": [Function],
161175
},
@@ -347,6 +361,10 @@ input CreateIssueInput {
347361
bugFixId: ID
348362
}
349363
364+
input CreateModelWithArrayScalarInput {
365+
roles: [String!]!
366+
}
367+
350368
input CreateModelWithTransientFieldInput {
351369
name: String
352370
}
@@ -495,6 +513,35 @@ input IssueFilter {
495513
not: IssueFilter
496514
}
497515
516+
\\"\\"\\"@model\\"\\"\\"
517+
type ModelWithArrayScalar {
518+
id: ID!
519+
roles: [String!]!
520+
}
521+
522+
input ModelWithArrayScalarFilter {
523+
id: IDInput
524+
roles: StringInput
525+
and: [ModelWithArrayScalarFilter!]
526+
or: [ModelWithArrayScalarFilter!]
527+
not: ModelWithArrayScalarFilter
528+
}
529+
530+
type ModelWithArrayScalarResultList {
531+
items: [ModelWithArrayScalar]!
532+
offset: Int
533+
limit: Int
534+
count: Int
535+
}
536+
537+
input ModelWithArrayScalarSubscriptionFilter {
538+
and: [ModelWithArrayScalarSubscriptionFilter!]
539+
or: [ModelWithArrayScalarSubscriptionFilter!]
540+
not: ModelWithArrayScalarSubscriptionFilter
541+
id: IDInput
542+
roles: StringInput
543+
}
544+
498545
\\"\\"\\"@model\\"\\"\\"
499546
type ModelWithTransientField {
500547
id: ID!
@@ -535,6 +582,11 @@ input MutateCommentInput {
535582
note_id: ID
536583
}
537584
585+
input MutateModelWithArrayScalarInput {
586+
id: ID!
587+
roles: [String]
588+
}
589+
538590
input MutateModelWithTransientFieldInput {
539591
id: ID!
540592
name: String
@@ -576,6 +628,9 @@ type Mutation {
576628
createModelWithTransientField(input: CreateModelWithTransientFieldInput!): ModelWithTransientField
577629
updateModelWithTransientField(input: MutateModelWithTransientFieldInput!): ModelWithTransientField
578630
deleteModelWithTransientField(input: MutateModelWithTransientFieldInput!): ModelWithTransientField
631+
createModelWithArrayScalar(input: CreateModelWithArrayScalarInput!): ModelWithArrayScalar
632+
updateModelWithArrayScalar(input: MutateModelWithArrayScalarInput!): ModelWithArrayScalar
633+
deleteModelWithArrayScalar(input: MutateModelWithArrayScalarInput!): ModelWithArrayScalar
579634
}
580635
581636
\\"\\"\\" @model \\"\\"\\"
@@ -638,6 +693,8 @@ type Query {
638693
findVersioneds(filter: VersionedFilter, page: PageRequest, orderBy: OrderByInput): VersionedResultList!
639694
getModelWithTransientField(id: ID!): ModelWithTransientField
640695
findModelWithTransientFields(filter: ModelWithTransientFieldFilter, page: PageRequest, orderBy: OrderByInput): ModelWithTransientFieldResultList!
696+
getModelWithArrayScalar(id: ID!): ModelWithArrayScalar
697+
findModelWithArrayScalars(filter: ModelWithArrayScalarFilter, page: PageRequest, orderBy: OrderByInput): ModelWithArrayScalarResultList!
641698
}
642699
643700
enum SortDirectionEnum {
@@ -671,6 +728,9 @@ type Subscription {
671728
newModelWithTransientField(filter: ModelWithTransientFieldSubscriptionFilter): ModelWithTransientField!
672729
updatedModelWithTransientField(filter: ModelWithTransientFieldSubscriptionFilter): ModelWithTransientField!
673730
deletedModelWithTransientField(filter: ModelWithTransientFieldSubscriptionFilter): ModelWithTransientField!
731+
newModelWithArrayScalar(filter: ModelWithArrayScalarSubscriptionFilter): ModelWithArrayScalar!
732+
updatedModelWithArrayScalar(filter: ModelWithArrayScalarSubscriptionFilter): ModelWithArrayScalar!
733+
deletedModelWithArrayScalar(filter: ModelWithArrayScalarSubscriptionFilter): ModelWithArrayScalar!
674734
}
675735
676736
\\"\\"\\"@model\\"\\"\\"
@@ -766,6 +826,8 @@ type Query {
766826
findVersioneds(filter: VersionedFilter, page: PageRequest, orderBy: OrderByInput): VersionedResultList!
767827
getModelWithTransientField(id: ID!): ModelWithTransientField
768828
findModelWithTransientFields(filter: ModelWithTransientFieldFilter, page: PageRequest, orderBy: OrderByInput): ModelWithTransientFieldResultList!
829+
getModelWithArrayScalar(id: ID!): ModelWithArrayScalar
830+
findModelWithArrayScalars(filter: ModelWithArrayScalarFilter, page: PageRequest, orderBy: OrderByInput): ModelWithArrayScalarResultList!
769831
}
770832
771833
\\"\\"\\" @model \\"\\"\\"
@@ -984,6 +1046,27 @@ input ModelWithTransientFieldFilter {
9841046
not: ModelWithTransientFieldFilter
9851047
}
9861048
1049+
\\"\\"\\"@model\\"\\"\\"
1050+
type ModelWithArrayScalar {
1051+
id: ID!
1052+
roles: [String!]!
1053+
}
1054+
1055+
type ModelWithArrayScalarResultList {
1056+
items: [ModelWithArrayScalar]!
1057+
offset: Int
1058+
limit: Int
1059+
count: Int
1060+
}
1061+
1062+
input ModelWithArrayScalarFilter {
1063+
id: IDInput
1064+
roles: StringInput
1065+
and: [ModelWithArrayScalarFilter!]
1066+
or: [ModelWithArrayScalarFilter!]
1067+
not: ModelWithArrayScalarFilter
1068+
}
1069+
9871070
type Mutation {
9881071
likeNote(id: ID!): Note!
9891072
createNote(input: CreateNoteInput!): Note
@@ -1002,6 +1085,9 @@ type Mutation {
10021085
createModelWithTransientField(input: CreateModelWithTransientFieldInput!): ModelWithTransientField
10031086
updateModelWithTransientField(input: MutateModelWithTransientFieldInput!): ModelWithTransientField
10041087
deleteModelWithTransientField(input: MutateModelWithTransientFieldInput!): ModelWithTransientField
1088+
createModelWithArrayScalar(input: CreateModelWithArrayScalarInput!): ModelWithArrayScalar
1089+
updateModelWithArrayScalar(input: MutateModelWithArrayScalarInput!): ModelWithArrayScalar
1090+
deleteModelWithArrayScalar(input: MutateModelWithArrayScalarInput!): ModelWithArrayScalar
10051091
}
10061092
10071093
input CreateNoteInput {
@@ -1162,6 +1248,15 @@ input MutateModelWithTransientFieldInput {
11621248
name: String
11631249
}
11641250
1251+
input CreateModelWithArrayScalarInput {
1252+
roles: [String!]!
1253+
}
1254+
1255+
input MutateModelWithArrayScalarInput {
1256+
id: ID!
1257+
roles: [String]
1258+
}
1259+
11651260
type Subscription {
11661261
newNote(filter: NoteSubscriptionFilter): Note!
11671262
updatedNote(filter: NoteSubscriptionFilter): Note!
@@ -1175,6 +1270,9 @@ type Subscription {
11751270
newModelWithTransientField(filter: ModelWithTransientFieldSubscriptionFilter): ModelWithTransientField!
11761271
updatedModelWithTransientField(filter: ModelWithTransientFieldSubscriptionFilter): ModelWithTransientField!
11771272
deletedModelWithTransientField(filter: ModelWithTransientFieldSubscriptionFilter): ModelWithTransientField!
1273+
newModelWithArrayScalar(filter: ModelWithArrayScalarSubscriptionFilter): ModelWithArrayScalar!
1274+
updatedModelWithArrayScalar(filter: ModelWithArrayScalarSubscriptionFilter): ModelWithArrayScalar!
1275+
deletedModelWithArrayScalar(filter: ModelWithArrayScalarSubscriptionFilter): ModelWithArrayScalar!
11781276
}
11791277
11801278
input NoteSubscriptionFilter {
@@ -1212,6 +1310,14 @@ input ModelWithTransientFieldSubscriptionFilter {
12121310
name: StringInput
12131311
}
12141312
1313+
input ModelWithArrayScalarSubscriptionFilter {
1314+
and: [ModelWithArrayScalarSubscriptionFilter!]
1315+
or: [ModelWithArrayScalarSubscriptionFilter!]
1316+
not: ModelWithArrayScalarSubscriptionFilter
1317+
id: IDInput
1318+
roles: StringInput
1319+
}
1320+
12151321
enum AUTH_ROLE {
12161322
ANONYMOUS
12171323
PRIVATE
@@ -1239,6 +1345,8 @@ type Query {
12391345
findVersioneds(filter: VersionedFilter, page: PageRequest, orderBy: OrderByInput): VersionedResultList!
12401346
getModelWithTransientField(id: ID!): ModelWithTransientField
12411347
findModelWithTransientFields(filter: ModelWithTransientFieldFilter, page: PageRequest, orderBy: OrderByInput): ModelWithTransientFieldResultList!
1348+
getModelWithArrayScalar(id: ID!): ModelWithArrayScalar
1349+
findModelWithArrayScalars(filter: ModelWithArrayScalarFilter, page: PageRequest, orderBy: OrderByInput): ModelWithArrayScalarResultList!
12421350
}
12431351
12441352
\\"\\"\\" @model \\"\\"\\"
@@ -1457,6 +1565,27 @@ input ModelWithTransientFieldFilter {
14571565
not: ModelWithTransientFieldFilter
14581566
}
14591567
1568+
\\"\\"\\"@model\\"\\"\\"
1569+
type ModelWithArrayScalar {
1570+
id: ID!
1571+
roles: [String!]!
1572+
}
1573+
1574+
type ModelWithArrayScalarResultList {
1575+
items: [ModelWithArrayScalar]!
1576+
offset: Int
1577+
limit: Int
1578+
count: Int
1579+
}
1580+
1581+
input ModelWithArrayScalarFilter {
1582+
id: IDInput
1583+
roles: StringInput
1584+
and: [ModelWithArrayScalarFilter!]
1585+
or: [ModelWithArrayScalarFilter!]
1586+
not: ModelWithArrayScalarFilter
1587+
}
1588+
14601589
type Mutation {
14611590
likeNote(id: ID!): Note!
14621591
createNote(input: CreateNoteInput!): Note
@@ -1475,6 +1604,9 @@ type Mutation {
14751604
createModelWithTransientField(input: CreateModelWithTransientFieldInput!): ModelWithTransientField
14761605
updateModelWithTransientField(input: MutateModelWithTransientFieldInput!): ModelWithTransientField
14771606
deleteModelWithTransientField(input: MutateModelWithTransientFieldInput!): ModelWithTransientField
1607+
createModelWithArrayScalar(input: CreateModelWithArrayScalarInput!): ModelWithArrayScalar
1608+
updateModelWithArrayScalar(input: MutateModelWithArrayScalarInput!): ModelWithArrayScalar
1609+
deleteModelWithArrayScalar(input: MutateModelWithArrayScalarInput!): ModelWithArrayScalar
14781610
}
14791611
14801612
input CreateNoteInput {
@@ -1635,6 +1767,15 @@ input MutateModelWithTransientFieldInput {
16351767
name: String
16361768
}
16371769
1770+
input CreateModelWithArrayScalarInput {
1771+
roles: [String!]!
1772+
}
1773+
1774+
input MutateModelWithArrayScalarInput {
1775+
id: ID!
1776+
roles: [String]
1777+
}
1778+
16381779
type Subscription {
16391780
newNote(filter: NoteSubscriptionFilter): Note!
16401781
updatedNote(filter: NoteSubscriptionFilter): Note!
@@ -1648,6 +1789,9 @@ type Subscription {
16481789
newModelWithTransientField(filter: ModelWithTransientFieldSubscriptionFilter): ModelWithTransientField!
16491790
updatedModelWithTransientField(filter: ModelWithTransientFieldSubscriptionFilter): ModelWithTransientField!
16501791
deletedModelWithTransientField(filter: ModelWithTransientFieldSubscriptionFilter): ModelWithTransientField!
1792+
newModelWithArrayScalar(filter: ModelWithArrayScalarSubscriptionFilter): ModelWithArrayScalar!
1793+
updatedModelWithArrayScalar(filter: ModelWithArrayScalarSubscriptionFilter): ModelWithArrayScalar!
1794+
deletedModelWithArrayScalar(filter: ModelWithArrayScalarSubscriptionFilter): ModelWithArrayScalar!
16511795
}
16521796
16531797
input NoteSubscriptionFilter {
@@ -1685,6 +1829,14 @@ input ModelWithTransientFieldSubscriptionFilter {
16851829
name: StringInput
16861830
}
16871831
1832+
input ModelWithArrayScalarSubscriptionFilter {
1833+
and: [ModelWithArrayScalarSubscriptionFilter!]
1834+
or: [ModelWithArrayScalarSubscriptionFilter!]
1835+
not: ModelWithArrayScalarSubscriptionFilter
1836+
id: IDInput
1837+
roles: StringInput
1838+
}
1839+
16881840
enum AUTH_ROLE {
16891841
ANONYMOUS
16901842
PRIVATE

packages/graphback-codegen-schema/tests/mock.graphql

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,3 +142,9 @@ type ModelWithTransientField {
142142
scalar DateTime
143143
scalar GraphbackDate
144144
scalar GraphbackJSON
145+
146+
"""@model"""
147+
type ModelWithArrayScalar {
148+
id: ID!
149+
roles: [String!]!
150+
}

templates/ts-apollo-mongodb-backend/model/datamodel.graphql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ type Comment {
1414
_id: GraphbackObjectID!
1515
text: String
1616
description: String
17+
roles: [String!]!
1718
}
1819

1920
type Query {

0 commit comments

Comments
 (0)