Skip to content

Commit cb28b9b

Browse files
authored
feat: swift use improved pluralization (#667)
1 parent 18e61fb commit cb28b9b

File tree

6 files changed

+141
-63
lines changed

6 files changed

+141
-63
lines changed

packages/amplify-codegen/src/commands/models.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ Amplify Flutter versions prior to 0.6.0 are no longer supported by codegen. Plea
108108
const transformerVersion = readNumericFeatureFlag('graphQLTransformer.transformerVersion');
109109
const respectPrimaryKeyAttributesOnConnectionField = readFeatureFlag('graphQLTransformer.respectPrimaryKeyAttributesOnConnectionField');
110110
const generateModelsForLazyLoadAndCustomSelectionSet = readFeatureFlag('codegen.generateModelsForLazyLoadAndCustomSelectionSet');
111+
const improvePluralization = readFeatureFlag('graphQLTransformer.improvePluralization');
111112

112113
let isTimestampFieldsAdded = readFeatureFlag('codegen.addTimestampFields');
113114

@@ -125,6 +126,7 @@ Amplify Flutter versions prior to 0.6.0 are no longer supported by codegen. Plea
125126
usePipelinedTransformer,
126127
transformerVersion,
127128
respectPrimaryKeyAttributesOnConnectionField,
129+
improvePluralization,
128130
generateModelsForLazyLoadAndCustomSelectionSet,
129131
codegenVersion: packageVersion,
130132
overrideOutputDir, // This needs to live under `config` in order for the GraphQL types to work out.

packages/appsync-modelgen-plugin/src/__tests__/visitors/__snapshots__/appsync-swift-visitor.test.ts.snap

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,8 @@ extension Post {
6363
public static let schema = defineSchema { model in
6464
let post = Post.keys
6565
66-
model.pluralName = \\"Posts\\"
66+
model.listPluralName = \\"Posts\\"
67+
model.syncPluralName = \\"Posts\\"
6768
6869
model.attributes(
6970
.index(fields: [\\"id\\", \\"title\\"], name: nil),
@@ -175,7 +176,8 @@ extension Comment {
175176
public static let schema = defineSchema { model in
176177
let comment = Comment.keys
177178
178-
model.pluralName = \\"Comments\\"
179+
model.listPluralName = \\"Comments\\"
180+
model.syncPluralName = \\"Comments\\"
179181
180182
model.attributes(
181183
.index(fields: [\\"id\\", \\"content\\"], name: nil),
@@ -285,7 +287,8 @@ extension ModelCompositePk {
285287
public static let schema = defineSchema { model in
286288
let modelCompositePk = ModelCompositePk.keys
287289
288-
model.pluralName = \\"ModelCompositePks\\"
290+
model.listPluralName = \\"ModelCompositePks\\"
291+
model.syncPluralName = \\"ModelCompositePks\\"
289292
290293
model.attributes(
291294
.index(fields: [\\"id\\", \\"dob\\"], name: nil),
@@ -385,7 +388,8 @@ extension ModelExplicitCustomPk {
385388
public static let schema = defineSchema { model in
386389
let modelExplicitCustomPk = ModelExplicitCustomPk.keys
387390
388-
model.pluralName = \\"ModelExplicitCustomPks\\"
391+
model.listPluralName = \\"ModelExplicitCustomPks\\"
392+
model.syncPluralName = \\"ModelExplicitCustomPks\\"
389393
390394
model.attributes(
391395
.index(fields: [\\"userId\\"], name: nil),
@@ -480,7 +484,8 @@ extension ModelExplicitDefaultPk {
480484
public static let schema = defineSchema { model in
481485
let modelExplicitDefaultPk = ModelExplicitDefaultPk.keys
482486
483-
model.pluralName = \\"ModelExplicitDefaultPks\\"
487+
model.listPluralName = \\"ModelExplicitDefaultPks\\"
488+
model.syncPluralName = \\"ModelExplicitDefaultPks\\"
484489
485490
model.attributes(
486491
.index(fields: [\\"id\\"], name: nil),
@@ -569,7 +574,8 @@ extension ModelImplicitDefaultPk {
569574
public static let schema = defineSchema { model in
570575
let modelImplicitDefaultPk = ModelImplicitDefaultPk.keys
571576
572-
model.pluralName = \\"ModelImplicitDefaultPks\\"
577+
model.listPluralName = \\"ModelImplicitDefaultPks\\"
578+
model.syncPluralName = \\"ModelImplicitDefaultPks\\"
573579
574580
model.attributes(
575581
.primaryKey(fields: [modelImplicitDefaultPk.id])
@@ -703,7 +709,8 @@ extension Project {
703709
public static let schema = defineSchema { model in
704710
let project = Project.keys
705711
706-
model.pluralName = \\"Projects\\"
712+
model.listPluralName = \\"Projects\\"
713+
model.syncPluralName = \\"Projects\\"
707714
708715
model.attributes(
709716
.index(fields: [\\"projectId\\", \\"name\\"], name: nil),
@@ -841,7 +848,8 @@ extension Team {
841848
public static let schema = defineSchema { model in
842849
let team = Team.keys
843850
844-
model.pluralName = \\"Teams\\"
851+
model.listPluralName = \\"Teams\\"
852+
model.syncPluralName = \\"Teams\\"
845853
846854
model.attributes(
847855
.index(fields: [\\"teamId\\", \\"name\\"], name: nil),
@@ -983,7 +991,8 @@ extension ListContainer {
983991
public static let schema = defineSchema { model in
984992
let listContainer = ListContainer.keys
985993
986-
model.pluralName = \\"ListContainers\\"
994+
model.listPluralName = \\"ListContainers\\"
995+
model.syncPluralName = \\"ListContainers\\"
987996
988997
model.fields(
989998
.id(),
@@ -1122,7 +1131,8 @@ extension Todo {
11221131
public static let schema = defineSchema { model in
11231132
let todo = Todo.keys
11241133
1125-
model.pluralName = \\"Todos\\"
1134+
model.listPluralName = \\"Todos\\"
1135+
model.syncPluralName = \\"Todos\\"
11261136
11271137
model.fields(
11281138
.id(),
@@ -1247,7 +1257,8 @@ extension task {
12471257
public static let schema = defineSchema { model in
12481258
let task = task.keys
12491259
1250-
model.pluralName = \\"tasks\\"
1260+
model.listPluralName = \\"tasks\\"
1261+
model.syncPluralName = \\"tasks\\"
12511262
12521263
model.fields(
12531264
.id(),

packages/appsync-modelgen-plugin/src/__tests__/visitors/appsync-swift-visitor.test.ts

Lines changed: 51 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const defaultIosVisitorSetings = {
1111
handleListNullabilityTransparently: true,
1212
transformerVersion: 1,
1313
respectPrimaryKeyAttributesOnConnectionField: false,
14+
improvePluralization: true,
1415
generateModelsForLazyLoadAndCustomSelectionSet: true,
1516
};
1617
const buildSchemaWithDirectives = (schema: String): GraphQLSchema => {
@@ -118,7 +119,8 @@ describe('AppSyncSwiftVisitor', () => {
118119
public static let schema = defineSchema { model in
119120
let simpleModel = SimpleModel.keys
120121
121-
model.pluralName = \\"SimpleModels\\"
122+
model.listPluralName = \\"SimpleModels\\"
123+
model.syncPluralName = \\"SimpleModels\\"
122124
123125
model.fields(
124126
.id(),
@@ -244,7 +246,8 @@ describe('AppSyncSwiftVisitor', () => {
244246
public static let schema = defineSchema { model in
245247
let snake_case = snake_case.keys
246248
247-
model.pluralName = \\"snake_cases\\"
249+
model.listPluralName = \\"snake_cases\\"
250+
model.syncPluralName = \\"snake_cases\\"
248251
249252
model.fields(
250253
.id(),
@@ -397,7 +400,8 @@ describe('AppSyncSwiftVisitor', () => {
397400
public static let schema = defineSchema { model in
398401
let authorBook = authorBook.keys
399402
400-
model.pluralName = \\"authorBooks\\"
403+
model.listPluralName = \\"authorBooks\\"
404+
model.syncPluralName = \\"authorBooks\\"
401405
402406
model.attributes(
403407
.index(fields: [\\"author_id\\"], name: \\"byAuthor\\"),
@@ -701,7 +705,8 @@ describe('AppSyncSwiftVisitor', () => {
701705
public static let schema = defineSchema { model in
702706
let todo = Todo.keys
703707
704-
model.pluralName = \\"Todos\\"
708+
model.listPluralName = \\"Todos\\"
709+
model.syncPluralName = \\"Todos\\"
705710
706711
model.fields(
707712
.id(),
@@ -864,7 +869,8 @@ describe('AppSyncSwiftVisitor', () => {
864869
public static let schema = defineSchema { model in
865870
let task = task.keys
866871
867-
model.pluralName = \\"tasks\\"
872+
model.listPluralName = \\"tasks\\"
873+
model.syncPluralName = \\"tasks\\"
868874
869875
model.fields(
870876
.id(),
@@ -1029,7 +1035,8 @@ describe('AppSyncSwiftVisitor', () => {
10291035
public static let schema = defineSchema { model in
10301036
let post = Post.keys
10311037
1032-
model.pluralName = \\"Posts\\"
1038+
model.listPluralName = \\"Posts\\"
1039+
model.syncPluralName = \\"Posts\\"
10331040
10341041
model.fields(
10351042
.id(),
@@ -1120,7 +1127,8 @@ describe('AppSyncSwiftVisitor', () => {
11201127
public static let schema = defineSchema { model in
11211128
let post = Post.keys
11221129
1123-
model.pluralName = \\"Posts\\"
1130+
model.listPluralName = \\"Posts\\"
1131+
model.syncPluralName = \\"Posts\\"
11241132
11251133
model.fields(
11261134
.id(),
@@ -1256,7 +1264,8 @@ describe('AppSyncSwiftVisitor', () => {
12561264
public static let schema = defineSchema { model in
12571265
let objectWithNativeTypes = ObjectWithNativeTypes.keys
12581266
1259-
model.pluralName = \\"ObjectWithNativeTypes\\"
1267+
model.listPluralName = \\"ObjectWithNativeTypes\\"
1268+
model.syncPluralName = \\"ObjectWithNativeTypes\\"
12601269
12611270
model.fields(
12621271
.id(),
@@ -1407,7 +1416,8 @@ describe('AppSyncSwiftVisitor', () => {
14071416
public static let schema = defineSchema { model in
14081417
let attraction = Attraction.keys
14091418
1410-
model.pluralName = \\"Attractions\\"
1419+
model.listPluralName = \\"Attractions\\"
1420+
model.syncPluralName = \\"Attractions\\"
14111421
14121422
model.fields(
14131423
.id(),
@@ -1489,7 +1499,8 @@ describe('AppSyncSwiftVisitor', () => {
14891499
public static let schema = defineSchema { model in
14901500
let location = Location.keys
14911501
1492-
model.pluralName = \\"Locations\\"
1502+
model.listPluralName = \\"Locations\\"
1503+
model.syncPluralName = \\"Locations\\"
14931504
14941505
model.fields(
14951506
.field(location.lat, is: .required, ofType: .string),
@@ -1676,7 +1687,8 @@ describe('AppSyncSwiftVisitor', () => {
16761687
rule(allow: .owner, ownerField: \\"owner\\", identityClaim: \\"cognito:username\\", provider: .userPools, operations: [.create, .update, .delete, .read])
16771688
]
16781689
1679-
model.pluralName = \\"Posts\\"
1690+
model.listPluralName = \\"Posts\\"
1691+
model.syncPluralName = \\"Posts\\"
16801692
16811693
model.fields(
16821694
.id(),
@@ -1745,7 +1757,8 @@ describe('AppSyncSwiftVisitor', () => {
17451757
rule(allow: .owner, ownerField: \\"author\\", identityClaim: \\"cognito:username\\", provider: .userPools, operations: [.create, .update, .delete, .read])
17461758
]
17471759
1748-
model.pluralName = \\"Posts\\"
1760+
model.listPluralName = \\"Posts\\"
1761+
model.syncPluralName = \\"Posts\\"
17491762
17501763
model.fields(
17511764
.id(),
@@ -1815,7 +1828,8 @@ describe('AppSyncSwiftVisitor', () => {
18151828
rule(allow: .owner, ownerField: \\"author\\", identityClaim: \\"cognito:username\\", provider: .userPools, operations: [.create, .update, .delete])
18161829
]
18171830
1818-
model.pluralName = \\"Posts\\"
1831+
model.listPluralName = \\"Posts\\"
1832+
model.syncPluralName = \\"Posts\\"
18191833
18201834
model.fields(
18211835
.id(),
@@ -1885,7 +1899,8 @@ describe('AppSyncSwiftVisitor', () => {
18851899
rule(allow: .owner, ownerField: \\"author\\", identityClaim: \\"sub\\", provider: .userPools, operations: [.create, .update, .delete, .read])
18861900
]
18871901
1888-
model.pluralName = \\"Posts\\"
1902+
model.listPluralName = \\"Posts\\"
1903+
model.syncPluralName = \\"Posts\\"
18891904
18901905
model.fields(
18911906
.id(),
@@ -1952,7 +1967,8 @@ describe('AppSyncSwiftVisitor', () => {
19521967
rule(allow: .owner, ownerField: \\"owner\\", identityClaim: \\"cognito:username\\", provider: .userPools, operations: [.create, .update, .delete, .read])
19531968
]
19541969
1955-
model.pluralName = \\"Posts\\"
1970+
model.listPluralName = \\"Posts\\"
1971+
model.syncPluralName = \\"Posts\\"
19561972
19571973
model.fields(
19581974
.id(),
@@ -2015,7 +2031,8 @@ describe('AppSyncSwiftVisitor', () => {
20152031
rule(allow: .owner, ownerField: \\"customField\\", identityClaim: \\"cognito:username\\", provider: .userPools, operations: [.create, .update, .delete, .read])
20162032
]
20172033
2018-
model.pluralName = \\"Posts\\"
2034+
model.listPluralName = \\"Posts\\"
2035+
model.syncPluralName = \\"Posts\\"
20192036
20202037
model.fields(
20212038
.id(),
@@ -2085,7 +2102,8 @@ describe('AppSyncSwiftVisitor', () => {
20852102
rule(allow: .owner, ownerField: \\"editors\\", identityClaim: \\"cognito:username\\", provider: .userPools, operations: [.update, .read])
20862103
]
20872104
2088-
model.pluralName = \\"Posts\\"
2105+
model.listPluralName = \\"Posts\\"
2106+
model.syncPluralName = \\"Posts\\"
20892107
20902108
model.fields(
20912109
.id(),
@@ -2161,7 +2179,8 @@ describe('AppSyncSwiftVisitor', () => {
21612179
rule(allow: .groups, groupClaim: \\"cognito:groups\\", groups: [\\"Admins\\"], provider: .userPools, operations: [.create, .update, .delete, .read])
21622180
]
21632181
2164-
model.pluralName = \\"Employees\\"
2182+
model.listPluralName = \\"Employees\\"
2183+
model.syncPluralName = \\"Employees\\"
21652184
21662185
model.fields(
21672186
.id(),
@@ -2235,7 +2254,8 @@ describe('AppSyncSwiftVisitor', () => {
22352254
rule(allow: .groups, groupClaim: \\"cognito:groups\\", groups: [\\"admin\\", \\"editors\\"], provider: .userPools, operations: [.create, .update, .delete, .read])
22362255
]
22372256
2238-
model.pluralName = \\"Posts\\"
2257+
model.listPluralName = \\"Posts\\"
2258+
model.syncPluralName = \\"Posts\\"
22392259
22402260
model.fields(
22412261
.id(),
@@ -2300,7 +2320,8 @@ describe('AppSyncSwiftVisitor', () => {
23002320
rule(allow: .groups, groupClaim: \\"cognito:groups\\", groupsField: \\"groups\\", provider: .userPools, operations: [.create, .update, .delete, .read])
23012321
]
23022322
2303-
model.pluralName = \\"Posts\\"
2323+
model.listPluralName = \\"Posts\\"
2324+
model.syncPluralName = \\"Posts\\"
23042325
23052326
model.fields(
23062327
.id(),
@@ -2368,7 +2389,8 @@ describe('AppSyncSwiftVisitor', () => {
23682389
rule(allow: .groups, groupClaim: \\"cognito:groups\\", groups: [\\"admin\\"], provider: .userPools, operations: [.create, .update, .delete])
23692390
]
23702391
2371-
model.pluralName = \\"Posts\\"
2392+
model.listPluralName = \\"Posts\\"
2393+
model.syncPluralName = \\"Posts\\"
23722394
23732395
model.fields(
23742396
.id(),
@@ -2432,7 +2454,8 @@ describe('AppSyncSwiftVisitor', () => {
24322454
rule(allow: .groups, groupClaim: \\"custom:groups\\", groups: [\\"admin\\"], provider: .userPools, operations: [.create, .update, .delete, .read])
24332455
]
24342456
2435-
model.pluralName = \\"Posts\\"
2457+
model.listPluralName = \\"Posts\\"
2458+
model.syncPluralName = \\"Posts\\"
24362459
24372460
model.fields(
24382461
.id(),
@@ -2495,7 +2518,8 @@ describe('AppSyncSwiftVisitor', () => {
24952518
rule(allow: .private, operations: [.create, .update, .delete, .read])
24962519
]
24972520
2498-
model.pluralName = \\"Posts\\"
2521+
model.listPluralName = \\"Posts\\"
2522+
model.syncPluralName = \\"Posts\\"
24992523
25002524
model.fields(
25012525
.id(),
@@ -2571,7 +2595,8 @@ describe('AppSyncSwiftVisitor', () => {
25712595
rule(allow: .public, operations: [.read])
25722596
]
25732597
2574-
model.pluralName = \\"Posts\\"
2598+
model.listPluralName = \\"Posts\\"
2599+
model.syncPluralName = \\"Posts\\"
25752600
25762601
model.fields(
25772602
.id(),
@@ -2651,7 +2676,8 @@ describe('AppSyncSwiftVisitor', () => {
26512676
rule(allow: .public, provider: .apiKey, operations: [.read])
26522677
]
26532678
2654-
model.pluralName = \\"Posts\\"
2679+
model.listPluralName = \\"Posts\\"
2680+
model.syncPluralName = \\"Posts\\"
26552681
26562682
model.fields(
26572683
.id(),

0 commit comments

Comments
 (0)