@aws-amplify/graphql-model-transformer 1.5.0-rds.0 → 2.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (156) hide show
  1. package/API.md +15 -15
  2. package/CHANGELOG.md +4 -5
  3. package/lib/graphql-types/mutation.d.ts.map +1 -1
  4. package/lib/graphql-types/mutation.js +2 -9
  5. package/lib/graphql-types/mutation.js.map +1 -1
  6. package/lib/rds-lambda.zip +0 -0
  7. package/lib/rds-notification-lambda.zip +0 -0
  8. package/lib/rds-patching-lambda.zip +0 -0
  9. package/lib/resolvers/generators/dynamodb-vtl-generator.d.ts +5 -6
  10. package/lib/resolvers/generators/dynamodb-vtl-generator.d.ts.map +1 -1
  11. package/lib/resolvers/generators/dynamodb-vtl-generator.js +5 -5
  12. package/lib/resolvers/generators/dynamodb-vtl-generator.js.map +1 -1
  13. package/lib/resolvers/generators/rds-vtl-generator.d.ts +5 -6
  14. package/lib/resolvers/generators/rds-vtl-generator.d.ts.map +1 -1
  15. package/lib/resolvers/generators/rds-vtl-generator.js +10 -10
  16. package/lib/resolvers/generators/rds-vtl-generator.js.map +1 -1
  17. package/lib/resolvers/generators/vtl-generator.d.ts +5 -6
  18. package/lib/resolvers/generators/vtl-generator.d.ts.map +1 -1
  19. package/lib/resolvers/rds/mutation.d.ts +3 -4
  20. package/lib/resolvers/rds/mutation.d.ts.map +1 -1
  21. package/lib/resolvers/rds/mutation.js +3 -7
  22. package/lib/resolvers/rds/mutation.js.map +1 -1
  23. package/lib/resolvers/rds/query.d.ts +1 -2
  24. package/lib/resolvers/rds/query.d.ts.map +1 -1
  25. package/lib/resolvers/rds/query.js +1 -3
  26. package/lib/resolvers/rds/query.js.map +1 -1
  27. package/lib/resolvers/rds/resolver.d.ts +7 -11
  28. package/lib/resolvers/rds/resolver.d.ts.map +1 -1
  29. package/lib/resolvers/rds/resolver.js +39 -50
  30. package/lib/resolvers/rds/resolver.js.map +1 -1
  31. package/lib/resources/dynamo-model-resource-generator.d.ts +2 -2
  32. package/lib/resources/dynamo-model-resource-generator.d.ts.map +1 -1
  33. package/lib/resources/dynamo-model-resource-generator.js +48 -43
  34. package/lib/resources/dynamo-model-resource-generator.js.map +1 -1
  35. package/lib/resources/model-resource-generator.js +8 -8
  36. package/lib/resources/model-resource-generator.js.map +1 -1
  37. package/lib/resources/rds-model-resource-generator.js +13 -13
  38. package/package.json +6 -5
  39. package/publish-notification-lambda/node_modules/.package-lock.json +11 -11
  40. package/publish-notification-lambda/node_modules/@types/node/README.md +1 -1
  41. package/publish-notification-lambda/node_modules/@types/node/package.json +2 -2
  42. package/publish-notification-lambda/node_modules/archiver/CHANGELOG.md +18 -0
  43. package/publish-notification-lambda/node_modules/archiver/package.json +7 -7
  44. package/publish-notification-lambda/node_modules/tslib/package.json +2 -2
  45. package/publish-notification-lambda/package-lock.json +11 -11
  46. package/rds-lambda/handler.ts +1 -2
  47. package/rds-lambda/node_modules/.package-lock.json +407 -362
  48. package/rds-lambda/node_modules/@babel/code-frame/package.json +3 -2
  49. package/rds-lambda/node_modules/@babel/core/package.json +9 -9
  50. package/rds-lambda/node_modules/@babel/helpers/package.json +5 -5
  51. package/rds-lambda/node_modules/@babel/highlight/package.json +1 -1
  52. package/rds-lambda/node_modules/@babel/parser/package.json +3 -3
  53. package/rds-lambda/node_modules/@babel/traverse/package.json +4 -4
  54. package/rds-lambda/node_modules/@babel/types/lib/index.js.flow +10 -10
  55. package/rds-lambda/node_modules/@babel/types/package.json +2 -2
  56. package/rds-lambda/node_modules/@jest/console/package.json +7 -7
  57. package/rds-lambda/node_modules/@jest/core/package.json +25 -25
  58. package/rds-lambda/node_modules/@jest/environment/package.json +6 -6
  59. package/rds-lambda/node_modules/@jest/expect/package.json +5 -5
  60. package/rds-lambda/node_modules/@jest/expect-utils/package.json +5 -5
  61. package/rds-lambda/node_modules/@jest/fake-timers/package.json +8 -8
  62. package/rds-lambda/node_modules/@jest/globals/package.json +7 -7
  63. package/rds-lambda/node_modules/@jest/reporters/node_modules/istanbul-lib-instrument/CHANGELOG.md +642 -0
  64. package/rds-lambda/node_modules/@jest/reporters/node_modules/istanbul-lib-instrument/LICENSE +24 -0
  65. package/rds-lambda/node_modules/@jest/reporters/node_modules/istanbul-lib-instrument/README.md +22 -0
  66. package/rds-lambda/node_modules/@jest/reporters/node_modules/istanbul-lib-instrument/package.json +50 -0
  67. package/rds-lambda/node_modules/@jest/reporters/node_modules/lru-cache/LICENSE +15 -0
  68. package/rds-lambda/node_modules/@jest/reporters/node_modules/lru-cache/README.md +166 -0
  69. package/rds-lambda/node_modules/@jest/reporters/node_modules/lru-cache/package.json +34 -0
  70. package/rds-lambda/node_modules/@jest/reporters/node_modules/semver/LICENSE +15 -0
  71. package/rds-lambda/node_modules/@jest/reporters/node_modules/semver/README.md +637 -0
  72. package/rds-lambda/node_modules/@jest/reporters/node_modules/semver/package.json +87 -0
  73. package/rds-lambda/node_modules/@jest/reporters/node_modules/semver/range.bnf +16 -0
  74. package/rds-lambda/node_modules/@jest/reporters/node_modules/yallist/LICENSE +15 -0
  75. package/rds-lambda/node_modules/@jest/reporters/node_modules/yallist/README.md +204 -0
  76. package/rds-lambda/node_modules/@jest/reporters/node_modules/yallist/package.json +29 -0
  77. package/rds-lambda/node_modules/@jest/reporters/package.json +14 -14
  78. package/rds-lambda/node_modules/@jest/schemas/package.json +3 -3
  79. package/rds-lambda/node_modules/@jest/source-map/package.json +3 -3
  80. package/rds-lambda/node_modules/@jest/test-result/package.json +7 -7
  81. package/rds-lambda/node_modules/@jest/test-sequencer/package.json +6 -6
  82. package/rds-lambda/node_modules/@jest/transform/package.json +8 -8
  83. package/rds-lambda/node_modules/@jest/types/package.json +4 -4
  84. package/rds-lambda/node_modules/@types/jest/README.md +1 -1
  85. package/rds-lambda/node_modules/@types/jest/package.json +2 -2
  86. package/rds-lambda/node_modules/@types/node/README.md +1 -1
  87. package/rds-lambda/node_modules/@types/node/package.json +2 -2
  88. package/rds-lambda/node_modules/archiver/CHANGELOG.md +18 -0
  89. package/rds-lambda/node_modules/archiver/package.json +7 -7
  90. package/rds-lambda/node_modules/babel-jest/README.md +1 -1
  91. package/rds-lambda/node_modules/babel-jest/package.json +6 -6
  92. package/rds-lambda/node_modules/babel-plugin-jest-hoist/README.md +1 -1
  93. package/rds-lambda/node_modules/babel-plugin-jest-hoist/package.json +3 -3
  94. package/rds-lambda/node_modules/babel-preset-jest/README.md +1 -1
  95. package/rds-lambda/node_modules/babel-preset-jest/package.json +4 -4
  96. package/rds-lambda/node_modules/caniuse-lite/package.json +1 -1
  97. package/rds-lambda/node_modules/diff-sequences/package.json +3 -3
  98. package/rds-lambda/node_modules/electron-to-chromium/chromium-versions.json +1 -1
  99. package/rds-lambda/node_modules/electron-to-chromium/full-chromium-versions.json +1 -1
  100. package/rds-lambda/node_modules/electron-to-chromium/full-versions.json +1 -1
  101. package/rds-lambda/node_modules/electron-to-chromium/package.json +1 -1
  102. package/rds-lambda/node_modules/electron-to-chromium/versions.json +1 -1
  103. package/rds-lambda/node_modules/expect/package.json +9 -10
  104. package/rds-lambda/node_modules/jest/package.json +6 -6
  105. package/rds-lambda/node_modules/jest-changed-files/package.json +4 -3
  106. package/rds-lambda/node_modules/jest-circus/README.md +1 -1
  107. package/rds-lambda/node_modules/jest-circus/package.json +14 -14
  108. package/rds-lambda/node_modules/jest-cli/package.json +10 -10
  109. package/rds-lambda/node_modules/jest-config/package.json +15 -15
  110. package/rds-lambda/node_modules/jest-diff/package.json +7 -7
  111. package/rds-lambda/node_modules/jest-docblock/package.json +3 -3
  112. package/rds-lambda/node_modules/jest-each/README.md +1 -1
  113. package/rds-lambda/node_modules/jest-each/package.json +7 -7
  114. package/rds-lambda/node_modules/jest-environment-node/package.json +9 -9
  115. package/rds-lambda/node_modules/jest-get-type/package.json +3 -3
  116. package/rds-lambda/node_modules/jest-haste-map/package.json +7 -7
  117. package/rds-lambda/node_modules/jest-leak-detector/package.json +5 -5
  118. package/rds-lambda/node_modules/jest-matcher-utils/README.md +1 -1
  119. package/rds-lambda/node_modules/jest-matcher-utils/package.json +7 -7
  120. package/rds-lambda/node_modules/jest-message-util/package.json +5 -5
  121. package/rds-lambda/node_modules/jest-mock/package.json +5 -5
  122. package/rds-lambda/node_modules/jest-regex-util/package.json +3 -3
  123. package/rds-lambda/node_modules/jest-resolve/package.json +6 -6
  124. package/rds-lambda/node_modules/jest-resolve-dependencies/package.json +10 -10
  125. package/rds-lambda/node_modules/jest-runner/package.json +20 -20
  126. package/rds-lambda/node_modules/jest-runtime/package.json +19 -19
  127. package/rds-lambda/node_modules/jest-snapshot/package.json +14 -14
  128. package/rds-lambda/node_modules/jest-util/package.json +4 -4
  129. package/rds-lambda/node_modules/jest-validate/package.json +6 -6
  130. package/rds-lambda/node_modules/jest-watcher/package.json +7 -7
  131. package/rds-lambda/node_modules/jest-worker/README.md +1 -1
  132. package/rds-lambda/node_modules/jest-worker/package.json +5 -5
  133. package/rds-lambda/node_modules/pretty-format/package.json +5 -5
  134. package/rds-lambda/node_modules/tslib/package.json +2 -2
  135. package/rds-lambda/package-lock.json +410 -365
  136. package/rds-patching-lambda/node_modules/.package-lock.json +11 -11
  137. package/rds-patching-lambda/node_modules/@types/node/README.md +1 -1
  138. package/rds-patching-lambda/node_modules/@types/node/package.json +2 -2
  139. package/rds-patching-lambda/node_modules/archiver/CHANGELOG.md +18 -0
  140. package/rds-patching-lambda/node_modules/archiver/package.json +7 -7
  141. package/rds-patching-lambda/node_modules/tslib/package.json +2 -2
  142. package/rds-patching-lambda/package-lock.json +11 -11
  143. package/src/__tests__/__snapshots__/model-transformer.test.ts.snap +0 -688
  144. package/src/__tests__/model-directive-arguments.test.ts +23 -28
  145. package/src/__tests__/model-transformer.test.ts +137 -216
  146. package/src/graphql-types/mutation.ts +3 -11
  147. package/src/resolvers/generators/dynamodb-vtl-generator.ts +5 -7
  148. package/src/resolvers/generators/rds-vtl-generator.ts +10 -12
  149. package/src/resolvers/generators/vtl-generator.ts +5 -6
  150. package/src/resolvers/rds/mutation.ts +3 -18
  151. package/src/resolvers/rds/query.ts +1 -9
  152. package/src/resolvers/rds/resolver.ts +45 -62
  153. package/src/resources/dynamo-model-resource-generator.ts +50 -47
  154. package/src/resources/model-resource-generator.ts +8 -8
  155. package/src/resources/rds-model-resource-generator.ts +13 -13
  156. package/tsconfig.tsbuildinfo +1 -1
@@ -1,6 +1,6 @@
1
1
  import { TransformerTransformSchemaStepContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
2
2
  import { DocumentNode, InputObjectTypeDefinitionNode, ObjectTypeDefinitionNode } from 'graphql';
3
- import { ModelResourceIDs, getBaseType, toPascalCase } from 'graphql-transformer-common';
3
+ import { ModelResourceIDs, toPascalCase } from 'graphql-transformer-common';
4
4
  import { InputFieldWrapper, InputObjectDefinitionWrapper, ObjectDefinitionWrapper } from '@aws-amplify/graphql-transformer-core';
5
5
  import { ModelDirectiveConfiguration } from '../directive';
6
6
  import { makeConditionFilterInput } from './common';
@@ -104,15 +104,7 @@ export const makeCreateInputField = (
104
104
  const typeName = objectWrapped.name;
105
105
  const name = ModelResourceIDs.ModelCreateInputObjectName(typeName);
106
106
 
107
- const idFieldName = 'id';
108
- const hasIdField = objectWrapped.hasField(idFieldName);
109
- let shouldAutogenerateIdField = false;
110
- if (hasIdField) {
111
- const idField = objectWrapped.getField(idFieldName);
112
- const idBaseType = getBaseType(idField.type);
113
- shouldAutogenerateIdField = idBaseType === 'ID' || idBaseType === 'String';
114
- }
115
-
107
+ const hasIdField = objectWrapped.hasField('id');
116
108
  const fieldsToRemove = objectWrapped
117
109
  .fields!.filter((field) => {
118
110
  if (knownModelTypes.has(field.getTypeName())) {
@@ -134,7 +126,7 @@ export const makeCreateInputField = (
134
126
  input.addField(InputFieldWrapper.create('id', 'ID', true));
135
127
  } else {
136
128
  const idField = input.fields.find((f) => f.name === 'id');
137
- if (idField && shouldAutogenerateIdField) {
129
+ if (idField) {
138
130
  idField.makeNullable();
139
131
  }
140
132
  }
@@ -1,4 +1,3 @@
1
- import { TransformerContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
2
1
  import {
3
2
  generateUpdateRequestTemplate,
4
3
  generateCreateRequestTemplate,
@@ -23,19 +22,18 @@ import {
23
22
  } from './vtl-generator';
24
23
 
25
24
  export class DynamoDBModelVTLGenerator implements ModelVTLGenerator {
26
- generateUpdateRequestTemplate(config: ModelUpdateRequestConfig, ctx: TransformerContextProvider): string {
25
+ generateUpdateRequestTemplate(config: ModelUpdateRequestConfig): string {
27
26
  return generateUpdateRequestTemplate(config.modelName, config.isSyncEnabled);
28
27
  }
29
28
 
30
- generateCreateRequestTemplate(config: ModelCreateRequestConfig, ctx: TransformerContextProvider): string {
29
+ generateCreateRequestTemplate(config: ModelCreateRequestConfig): string {
31
30
  return generateCreateRequestTemplate(config.modelName, config.modelIndexFields);
32
31
  }
33
-
34
32
  generateCreateInitSlotTemplate(config: ModelCreateInitSlotConfig, initializeIdField: boolean): string {
35
33
  return generateCreateInitSlotTemplate(config.modelConfig, initializeIdField);
36
34
  }
37
35
 
38
- generateDeleteRequestTemplate(config: ModelUpdateRequestConfig, ctx: TransformerContextProvider): string {
36
+ generateDeleteRequestTemplate(config: ModelUpdateRequestConfig): string {
39
37
  return generateDeleteRequestTemplate(config.modelName, config.isSyncEnabled);
40
38
  }
41
39
 
@@ -43,7 +41,7 @@ export class DynamoDBModelVTLGenerator implements ModelVTLGenerator {
43
41
  return generateUpdateInitSlotTemplate(config.modelConfig);
44
42
  }
45
43
 
46
- generateGetRequestTemplate(config: ModelRequestConfig, ctx: TransformerContextProvider): string {
44
+ generateGetRequestTemplate(config: ModelRequestConfig): string {
47
45
  return generateGetRequestTemplate();
48
46
  }
49
47
 
@@ -51,7 +49,7 @@ export class DynamoDBModelVTLGenerator implements ModelVTLGenerator {
51
49
  return generateGetResponseTemplate(config.isSyncEnabled);
52
50
  }
53
51
 
54
- generateListRequestTemplate(config: ModelRequestConfig, ctx: TransformerContextProvider): string {
52
+ generateListRequestTemplate(config: ModelRequestConfig): string {
55
53
  return generateListRequestTemplate();
56
54
  }
57
55
 
@@ -18,40 +18,38 @@ import {
18
18
  ModelUpdateRequestConfig,
19
19
  ModelVTLGenerator,
20
20
  } from './vtl-generator';
21
- import { TransformerContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
22
21
 
23
22
  // TODO: This class is created only to show the class structure. This needs a revisit to generate correct resolvers for RDS.
24
23
  export class RDSModelVTLGenerator implements ModelVTLGenerator {
25
- generateUpdateRequestTemplate(config: ModelUpdateRequestConfig, ctx: TransformerContextProvider): string {
26
- return generateLambdaUpdateRequestTemplate(config.modelName, config.operationName, config.modelIndexFields ?? ['id'], ctx);
24
+ generateUpdateRequestTemplate(config: ModelUpdateRequestConfig): string {
25
+ return generateLambdaUpdateRequestTemplate(config.modelName, config.operationName, config.modelIndexFields ?? ['id']);
27
26
  }
28
27
 
29
- generateCreateRequestTemplate(config: ModelCreateRequestConfig, ctx: TransformerContextProvider): string {
30
- return generateLambdaCreateRequestTemplate(config.modelName, config.operationName, ctx);
28
+ generateCreateRequestTemplate(config: ModelCreateRequestConfig): string {
29
+ return generateLambdaCreateRequestTemplate(config.modelName, config.operationName);
31
30
  }
32
-
33
31
  generateCreateInitSlotTemplate(config: ModelCreateInitSlotConfig, initializeIdField: boolean): string {
34
32
  return generateCreateInitSlotTemplate(config.modelConfig, initializeIdField);
35
33
  }
36
34
 
37
- generateDeleteRequestTemplate(config: ModelUpdateRequestConfig, ctx: TransformerContextProvider): string {
38
- return generateLambdaDeleteRequestTemplate(config.modelName, config.operationName, config.modelIndexFields ?? ['id'], ctx);
35
+ generateDeleteRequestTemplate(config: ModelUpdateRequestConfig): string {
36
+ return generateLambdaDeleteRequestTemplate(config.modelName, config.operationName, config.modelIndexFields ?? ['id']);
39
37
  }
40
38
 
41
39
  generateUpdateInitSlotTemplate(config: ModelCreateInitSlotConfig): string {
42
40
  return generateUpdateInitSlotTemplate(config.modelConfig);
43
41
  }
44
42
 
45
- generateGetRequestTemplate(config: ModelRequestConfig, ctx: TransformerContextProvider): string {
46
- return generateLambdaRequestTemplate(config.modelName, config.operation, config.operationName, ctx);
43
+ generateGetRequestTemplate(config: ModelRequestConfig): string {
44
+ return generateLambdaRequestTemplate(config.modelName, config.operation, config.operationName);
47
45
  }
48
46
 
49
47
  generateGetResponseTemplate(config: ModelUpdateRequestConfig): string {
50
48
  return generateGetLambdaResponseTemplate(false);
51
49
  }
52
50
 
53
- generateListRequestTemplate(config: ModelRequestConfig, ctx: TransformerContextProvider): string {
54
- return generateLambdaListRequestTemplate(config.modelName, config.operation, config.operationName, ctx);
51
+ generateListRequestTemplate(config: ModelRequestConfig): string {
52
+ return generateLambdaListRequestTemplate(config.modelName, config.operation, config.operationName);
55
53
  }
56
54
 
57
55
  generateSyncRequestTemplate(config: ModelRequestConfig): string {
@@ -1,4 +1,3 @@
1
- import { TransformerContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
2
1
  import { ModelDirectiveConfiguration } from '../../directive';
3
2
 
4
3
  export type ModelRequestConfig = {
@@ -32,14 +31,14 @@ export type ModelDefaultResponseConfig = ModelRequestConfig & {
32
31
  };
33
32
 
34
33
  export interface ModelVTLGenerator {
35
- generateUpdateRequestTemplate(config: ModelUpdateRequestConfig, ctx: TransformerContextProvider): string;
36
- generateCreateRequestTemplate(config: ModelCreateRequestConfig, ctx: TransformerContextProvider): string;
34
+ generateUpdateRequestTemplate(config: ModelUpdateRequestConfig): string;
35
+ generateCreateRequestTemplate(config: ModelCreateRequestConfig): string;
37
36
  generateCreateInitSlotTemplate(config: ModelCreateInitSlotConfig, initializeIdField: boolean): string;
38
- generateDeleteRequestTemplate(config: ModelDeleteRequestConfig, ctx: TransformerContextProvider): string;
37
+ generateDeleteRequestTemplate(config: ModelDeleteRequestConfig): string;
39
38
  generateUpdateInitSlotTemplate(config: ModelUpdateInitSlotConfig): string;
40
- generateGetRequestTemplate(config: ModelRequestConfig, ctx: TransformerContextProvider): string;
39
+ generateGetRequestTemplate(config: ModelRequestConfig): string;
41
40
  generateGetResponseTemplate(config: ModelGetResponseConfig): string;
42
- generateListRequestTemplate(config: ModelRequestConfig, ctx: TransformerContextProvider): string;
41
+ generateListRequestTemplate(config: ModelRequestConfig): string;
43
42
  generateSyncRequestTemplate(config: ModelRequestConfig): string;
44
43
  generateSubscriptionRequestTemplate(): string;
45
44
  generateSubscriptionResponseTemplate(): string;
@@ -12,9 +12,7 @@ import {
12
12
  str,
13
13
  toJson,
14
14
  } from 'graphql-mapping-template';
15
- import { TransformerContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
16
15
  import { ModelDirectiveConfiguration } from '../../directive';
17
- import { constructNonScalarFieldsStatement } from './resolver';
18
16
 
19
17
  /**
20
18
  * Generate mapping template that sets default values for create mutation
@@ -55,7 +53,7 @@ export const generateCreateInitSlotTemplate = (modelConfig: ModelDirectiveConfig
55
53
  return printBlock('Initialization default values')(compoundExpression(statements));
56
54
  };
57
55
 
58
- export const generateLambdaCreateRequestTemplate = (tableName: string, operationName: string, ctx: TransformerContextProvider): string =>
56
+ export const generateLambdaCreateRequestTemplate = (tableName: string, operationName: string): string =>
59
57
  printBlock('Invoke RDS Lambda data source')(
60
58
  compoundExpression([
61
59
  set(ref('lambdaInput'), obj({})),
@@ -65,7 +63,6 @@ export const generateLambdaCreateRequestTemplate = (tableName: string, operation
65
63
  set(ref('lambdaInput.operationName'), str(operationName)),
66
64
  set(ref('lambdaInput.args.metadata'), obj({})),
67
65
  set(ref('lambdaInput.args.metadata.keys'), list([])),
68
- constructNonScalarFieldsStatement(tableName, ctx),
69
66
  qref(
70
67
  methodCall(ref('lambdaInput.args.metadata.keys.addAll'), methodCall(ref('util.defaultIfNull'), ref('ctx.stash.keys'), list([]))),
71
68
  ),
@@ -118,12 +115,7 @@ export const generateUpdateInitSlotTemplate = (modelConfig: ModelDirectiveConfig
118
115
  /**
119
116
  * Generate VTL template that calls the lambda for an Update mutation
120
117
  */
121
- export const generateLambdaUpdateRequestTemplate = (
122
- tableName: string,
123
- operationName: string,
124
- modelIndexFields: string[],
125
- ctx: TransformerContextProvider,
126
- ): string =>
118
+ export const generateLambdaUpdateRequestTemplate = (tableName: string, operationName: string, modelIndexFields: string[]): string =>
127
119
  printBlock('Invoke RDS Lambda data source')(
128
120
  compoundExpression([
129
121
  set(ref('lambdaInput'), obj({})),
@@ -133,7 +125,6 @@ export const generateLambdaUpdateRequestTemplate = (
133
125
  set(ref('lambdaInput.operationName'), str(operationName)),
134
126
  set(ref('lambdaInput.args.metadata'), obj({})),
135
127
  set(ref('lambdaInput.args.metadata.keys'), list([])),
136
- constructNonScalarFieldsStatement(tableName, ctx),
137
128
  qref(
138
129
  methodCall(ref('lambdaInput.args.metadata.keys.addAll'), methodCall(ref('util.defaultIfNull'), ref('ctx.stash.keys'), list([]))),
139
130
  ),
@@ -155,12 +146,7 @@ export const generateLambdaUpdateRequestTemplate = (
155
146
  /**
156
147
  * Generate VTL template that calls the lambda for a Delete mutation
157
148
  */
158
- export const generateLambdaDeleteRequestTemplate = (
159
- tableName: string,
160
- operationName: string,
161
- modelIndexFields: string[],
162
- ctx: TransformerContextProvider,
163
- ): string =>
149
+ export const generateLambdaDeleteRequestTemplate = (tableName: string, operationName: string, modelIndexFields: string[]): string =>
164
150
  printBlock('Invoke RDS Lambda data source')(
165
151
  compoundExpression([
166
152
  set(ref('lambdaInput'), obj({})),
@@ -170,7 +156,6 @@ export const generateLambdaDeleteRequestTemplate = (
170
156
  set(ref('lambdaInput.operationName'), str(operationName)),
171
157
  set(ref('lambdaInput.args.metadata'), obj({})),
172
158
  set(ref('lambdaInput.args.metadata.keys'), list([])),
173
- constructNonScalarFieldsStatement(tableName, ctx),
174
159
  qref(
175
160
  methodCall(ref('lambdaInput.args.metadata.keys.addAll'), methodCall(ref('util.defaultIfNull'), ref('ctx.stash.keys'), list([]))),
176
161
  ),
@@ -1,13 +1,6 @@
1
- import { TransformerContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
2
1
  import { compoundExpression, list, methodCall, obj, printBlock, qref, ref, set, str } from 'graphql-mapping-template';
3
- import { constructNonScalarFieldsStatement } from './resolver';
4
2
 
5
- export const generateLambdaListRequestTemplate = (
6
- tableName: string,
7
- operation: string,
8
- operationName: string,
9
- ctx: TransformerContextProvider,
10
- ): string => {
3
+ export const generateLambdaListRequestTemplate = (tableName: string, operation: string, operationName: string): string => {
11
4
  return printBlock('Invoke RDS Lambda data source')(
12
5
  compoundExpression([
13
6
  set(ref('lambdaInput'), obj({})),
@@ -17,7 +10,6 @@ export const generateLambdaListRequestTemplate = (
17
10
  set(ref('lambdaInput.operationName'), str(operationName)),
18
11
  set(ref('lambdaInput.args.metadata'), obj({})),
19
12
  set(ref('lambdaInput.args.metadata.keys'), list([])),
20
- constructNonScalarFieldsStatement(tableName, ctx),
21
13
  qref(
22
14
  methodCall(ref('lambdaInput.args.metadata.keys.addAll'), methodCall(ref('util.defaultIfNull'), ref('ctx.stash.keys'), list([]))),
23
15
  ),
@@ -1,4 +1,4 @@
1
- import { CfnMapping, Duration, Fn, Stack } from 'aws-cdk-lib';
1
+ import { CfnMapping, Duration, Fn } from 'aws-cdk-lib';
2
2
  import {
3
3
  Expression,
4
4
  compoundExpression,
@@ -13,15 +13,14 @@ import {
13
13
  str,
14
14
  toJson,
15
15
  } from 'graphql-mapping-template';
16
- import { ResourceConstants, isArrayOrObject } from 'graphql-transformer-common';
17
- import { RDSConnectionSecrets } from '@aws-amplify/graphql-transformer-core';
18
- import { GraphQLAPIProvider, RDSLayerMapping, TransformerContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
16
+ import { ResourceConstants } from 'graphql-transformer-common';
17
+ import { RDSConnectionSecrets, setResourceName } from '@aws-amplify/graphql-transformer-core';
18
+ import { GraphQLAPIProvider, RDSLayerMapping } from '@aws-amplify/graphql-transformer-interfaces';
19
19
  import { Effect, IRole, Policy, PolicyStatement, Role, ServicePrincipal } from 'aws-cdk-lib/aws-iam';
20
20
  import { IFunction, LayerVersion, Runtime } from 'aws-cdk-lib/aws-lambda';
21
21
  import { Construct } from 'constructs';
22
22
  import path from 'path';
23
23
  import { VpcConfig } from '@aws-amplify/graphql-transformer-interfaces/src';
24
- import { EnumTypeDefinitionNode, FieldDefinitionNode, Kind, ObjectTypeDefinitionNode } from 'graphql';
25
24
 
26
25
  /**
27
26
  * Define RDS Lambda operations
@@ -45,7 +44,6 @@ const getLatestLayers = (latestLayers?: RDSLayerMapping): RDSLayerMapping => {
45
44
  if (latestLayers && Object.keys(latestLayers).length > 0) {
46
45
  return latestLayers;
47
46
  }
48
- console.warn('Unable to load the latest RDS layer configuration, using local configuration.');
49
47
  const defaultLayerMapping = getDefaultLayerMapping();
50
48
  return defaultLayerMapping;
51
49
  };
@@ -54,84 +52,84 @@ const getLatestLayers = (latestLayers?: RDSLayerMapping): RDSLayerMapping => {
54
52
  // For prod use account '582037449441', layer name 'AmplifyRDSLayer' and layer version '3' as of 2023-06-20
55
53
  const getDefaultLayerMapping = (): RDSLayerMapping => ({
56
54
  'ap-northeast-1': {
57
- layerRegion: 'arn:aws:lambda:ap-northeast-1:582037449441:layer:AmplifyRDSLayer:11',
55
+ layerRegion: 'arn:aws:lambda:ap-northeast-1:582037449441:layer:AmplifyRDSLayer:5',
58
56
  },
59
57
  'us-east-1': {
60
- layerRegion: 'arn:aws:lambda:us-east-1:582037449441:layer:AmplifyRDSLayer:11',
58
+ layerRegion: 'arn:aws:lambda:us-east-1:582037449441:layer:AmplifyRDSLayer:5',
61
59
  },
62
60
  'ap-southeast-1': {
63
- layerRegion: 'arn:aws:lambda:ap-southeast-1:582037449441:layer:AmplifyRDSLayer:11',
61
+ layerRegion: 'arn:aws:lambda:ap-southeast-1:582037449441:layer:AmplifyRDSLayer:5',
64
62
  },
65
63
  'eu-west-1': {
66
- layerRegion: 'arn:aws:lambda:eu-west-1:582037449441:layer:AmplifyRDSLayer:11',
64
+ layerRegion: 'arn:aws:lambda:eu-west-1:582037449441:layer:AmplifyRDSLayer:5',
67
65
  },
68
66
  'us-west-1': {
69
- layerRegion: 'arn:aws:lambda:us-west-1:582037449441:layer:AmplifyRDSLayer:11',
67
+ layerRegion: 'arn:aws:lambda:us-west-1:582037449441:layer:AmplifyRDSLayer:5',
70
68
  },
71
69
  'ap-east-1': {
72
- layerRegion: 'arn:aws:lambda:ap-east-1:582037449441:layer:AmplifyRDSLayer:11',
70
+ layerRegion: 'arn:aws:lambda:ap-east-1:582037449441:layer:AmplifyRDSLayer:5',
73
71
  },
74
72
  'ap-northeast-2': {
75
- layerRegion: 'arn:aws:lambda:ap-northeast-2:582037449441:layer:AmplifyRDSLayer:11',
73
+ layerRegion: 'arn:aws:lambda:ap-northeast-2:582037449441:layer:AmplifyRDSLayer:5',
76
74
  },
77
75
  'ap-northeast-3': {
78
- layerRegion: 'arn:aws:lambda:ap-northeast-3:582037449441:layer:AmplifyRDSLayer:11',
76
+ layerRegion: 'arn:aws:lambda:ap-northeast-3:582037449441:layer:AmplifyRDSLayer:5',
79
77
  },
80
78
  'ap-south-1': {
81
- layerRegion: 'arn:aws:lambda:ap-south-1:582037449441:layer:AmplifyRDSLayer:11',
79
+ layerRegion: 'arn:aws:lambda:ap-south-1:582037449441:layer:AmplifyRDSLayer:5',
82
80
  },
83
81
  'ap-southeast-2': {
84
- layerRegion: 'arn:aws:lambda:ap-southeast-2:582037449441:layer:AmplifyRDSLayer:11',
82
+ layerRegion: 'arn:aws:lambda:ap-southeast-2:582037449441:layer:AmplifyRDSLayer:5',
85
83
  },
86
84
  'ca-central-1': {
87
- layerRegion: 'arn:aws:lambda:ca-central-1:582037449441:layer:AmplifyRDSLayer:11',
85
+ layerRegion: 'arn:aws:lambda:ca-central-1:582037449441:layer:AmplifyRDSLayer:5',
88
86
  },
89
87
  'eu-central-1': {
90
- layerRegion: 'arn:aws:lambda:eu-central-1:582037449441:layer:AmplifyRDSLayer:11',
88
+ layerRegion: 'arn:aws:lambda:eu-central-1:582037449441:layer:AmplifyRDSLayer:5',
91
89
  },
92
90
  'eu-north-1': {
93
- layerRegion: 'arn:aws:lambda:eu-north-1:582037449441:layer:AmplifyRDSLayer:11',
91
+ layerRegion: 'arn:aws:lambda:eu-north-1:582037449441:layer:AmplifyRDSLayer:5',
94
92
  },
95
93
  'eu-west-2': {
96
- layerRegion: 'arn:aws:lambda:eu-west-2:582037449441:layer:AmplifyRDSLayer:11',
94
+ layerRegion: 'arn:aws:lambda:eu-west-2:582037449441:layer:AmplifyRDSLayer:5',
97
95
  },
98
96
  'eu-west-3': {
99
- layerRegion: 'arn:aws:lambda:eu-west-3:582037449441:layer:AmplifyRDSLayer:11',
97
+ layerRegion: 'arn:aws:lambda:eu-west-3:582037449441:layer:AmplifyRDSLayer:5',
100
98
  },
101
99
  'sa-east-1': {
102
- layerRegion: 'arn:aws:lambda:sa-east-1:582037449441:layer:AmplifyRDSLayer:11',
100
+ layerRegion: 'arn:aws:lambda:sa-east-1:582037449441:layer:AmplifyRDSLayer:5',
103
101
  },
104
102
  'us-east-2': {
105
- layerRegion: 'arn:aws:lambda:us-east-2:582037449441:layer:AmplifyRDSLayer:11',
103
+ layerRegion: 'arn:aws:lambda:us-east-2:582037449441:layer:AmplifyRDSLayer:5',
106
104
  },
107
105
  'us-west-2': {
108
- layerRegion: 'arn:aws:lambda:us-west-2:582037449441:layer:AmplifyRDSLayer:11',
106
+ layerRegion: 'arn:aws:lambda:us-west-2:582037449441:layer:AmplifyRDSLayer:5',
109
107
  },
110
108
  'cn-north-1': {
111
- layerRegion: 'arn:aws:lambda:cn-north-1:582037449441:layer:AmplifyRDSLayer:11',
109
+ layerRegion: 'arn:aws:lambda:cn-north-1:582037449441:layer:AmplifyRDSLayer:5',
112
110
  },
113
111
  'cn-northwest-1': {
114
- layerRegion: 'arn:aws:lambda:cn-northwest-1:582037449441:layer:AmplifyRDSLayer:11',
112
+ layerRegion: 'arn:aws:lambda:cn-northwest-1:582037449441:layer:AmplifyRDSLayer:5',
115
113
  },
116
114
  'us-gov-west-1': {
117
- layerRegion: 'arn:aws:lambda:us-gov-west-1:582037449441:layer:AmplifyRDSLayer:11',
115
+ layerRegion: 'arn:aws:lambda:us-gov-west-1:582037449441:layer:AmplifyRDSLayer:5',
118
116
  },
119
117
  'us-gov-east-1': {
120
- layerRegion: 'arn:aws:lambda:us-gov-east-1:582037449441:layer:AmplifyRDSLayer:11',
118
+ layerRegion: 'arn:aws:lambda:us-gov-east-1:582037449441:layer:AmplifyRDSLayer:5',
121
119
  },
122
120
  'me-south-1': {
123
- layerRegion: 'arn:aws:lambda:me-south-1:582037449441:layer:AmplifyRDSLayer:11',
121
+ layerRegion: 'arn:aws:lambda:me-south-1:582037449441:layer:AmplifyRDSLayer:5',
124
122
  },
125
123
  });
126
124
 
127
125
  /**
128
126
  * Create RDS Lambda function
129
- * @param stack Construct
127
+ * @param scope Construct
130
128
  * @param apiGraphql GraphQLAPIProvider
131
129
  * @param lambdaRole IRole
132
130
  */
133
131
  export const createRdsLambda = (
134
- stack: Stack,
132
+ scope: Construct,
135
133
  apiGraphql: GraphQLAPIProvider,
136
134
  lambdaRole: IRole,
137
135
  environment?: { [key: string]: string },
@@ -146,7 +144,7 @@ export const createRdsLambda = (
146
144
  Runtime.NODEJS_18_X,
147
145
  [
148
146
  LayerVersion.fromLayerVersionArn(
149
- stack,
147
+ scope,
150
148
  'SQLLambdaLayerVersion',
151
149
  Fn.findInMap(RDSLayerMappingID, Fn.ref('AWS::Region'), 'layerRegion'),
152
150
  ),
@@ -154,19 +152,19 @@ export const createRdsLambda = (
154
152
  lambdaRole,
155
153
  environment,
156
154
  Duration.seconds(30),
157
- stack,
155
+ scope,
158
156
  sqlLambdaVpcConfig,
159
157
  );
160
158
  };
161
159
 
162
160
  /**
163
161
  * Create RDS Patching Lambda function
164
- * @param stack Construct
162
+ * @param scope Construct
165
163
  * @param apiGraphql GraphQLAPIProvider
166
164
  * @param lambdaRole IRole
167
165
  */
168
166
  export const createRdsPatchingLambda = (
169
- stack: Stack,
167
+ scope: Construct,
170
168
  apiGraphql: GraphQLAPIProvider,
171
169
  lambdaRole: IRole,
172
170
  environment?: { [key: string]: string },
@@ -183,7 +181,7 @@ export const createRdsPatchingLambda = (
183
181
  lambdaRole,
184
182
  environment,
185
183
  Duration.minutes(6), // We have an arbituary wait time of up to 5 minutes in the lambda function to avoid throttling errors
186
- stack,
184
+ scope,
187
185
  sqlLambdaVpcConfig,
188
186
  );
189
187
  };
@@ -191,15 +189,16 @@ export const createRdsPatchingLambda = (
191
189
  /**
192
190
  * Create RDS Lambda IAM role
193
191
  * @param roleName string
194
- * @param stack Construct
192
+ * @param scope Construct
195
193
  * @param secretEntry RDSConnectionSecrets
196
194
  */
197
- export const createRdsLambdaRole = (roleName: string, stack: Construct, secretEntry: RDSConnectionSecrets): IRole => {
195
+ export const createRdsLambdaRole = (roleName: string, scope: Construct, secretEntry: RDSConnectionSecrets): IRole => {
198
196
  const { RDSLambdaIAMRoleLogicalID, RDSLambdaLogAccessPolicy } = ResourceConstants.RESOURCES;
199
- const role = new Role(stack, RDSLambdaIAMRoleLogicalID, {
197
+ const role = new Role(scope, RDSLambdaIAMRoleLogicalID, {
200
198
  assumedBy: new ServicePrincipal('lambda.amazonaws.com'),
201
199
  roleName,
202
200
  });
201
+ setResourceName(role, { name: RDSLambdaIAMRoleLogicalID, setOnDefaultChild: true });
203
202
  const policyStatements = [
204
203
  new PolicyStatement({
205
204
  actions: ['logs:CreateLogGroup', 'logs:CreateLogStream', 'logs:PutLogEvents'],
@@ -224,7 +223,7 @@ export const createRdsLambdaRole = (roleName: string, stack: Construct, secretEn
224
223
  }
225
224
 
226
225
  role.attachInlinePolicy(
227
- new Policy(stack, RDSLambdaLogAccessPolicy, {
226
+ new Policy(scope, RDSLambdaLogAccessPolicy, {
228
227
  statements: policyStatements,
229
228
  policyName: `${roleName}Policy`,
230
229
  }),
@@ -244,15 +243,16 @@ export const createRdsLambdaRole = (roleName: string, stack: Construct, secretEn
244
243
  /**
245
244
  * Create RDS Patching Lambda IAM role
246
245
  * @param roleName string
247
- * @param stack Construct
246
+ * @param scope Construct
248
247
  * @param functionArn FunctionArn
249
248
  */
250
- export const createRdsPatchingLambdaRole = (roleName: string, stack: Construct, functionArn: string): IRole => {
249
+ export const createRdsPatchingLambdaRole = (roleName: string, scope: Construct, functionArn: string): IRole => {
251
250
  const { RDSPatchingLambdaIAMRoleLogicalID, RDSPatchingLambdaLogAccessPolicy } = ResourceConstants.RESOURCES;
252
- const role = new Role(stack, RDSPatchingLambdaIAMRoleLogicalID, {
251
+ const role = new Role(scope, RDSPatchingLambdaIAMRoleLogicalID, {
253
252
  assumedBy: new ServicePrincipal('lambda.amazonaws.com'),
254
253
  roleName,
255
254
  });
255
+ setResourceName(role, { name: RDSPatchingLambdaIAMRoleLogicalID, setOnDefaultChild: true });
256
256
  const policyStatements = [
257
257
  new PolicyStatement({
258
258
  actions: ['logs:CreateLogGroup', 'logs:CreateLogStream', 'logs:PutLogEvents'],
@@ -272,7 +272,7 @@ export const createRdsPatchingLambdaRole = (roleName: string, stack: Construct,
272
272
  ];
273
273
 
274
274
  role.attachInlinePolicy(
275
- new Policy(stack, RDSPatchingLambdaLogAccessPolicy, {
275
+ new Policy(scope, RDSPatchingLambdaLogAccessPolicy, {
276
276
  statements: policyStatements,
277
277
  policyName: `${roleName}Policy`,
278
278
  }),
@@ -295,12 +295,7 @@ export const createRdsPatchingLambdaRole = (roleName: string, stack: Construct,
295
295
  * @param operation string
296
296
  * @param operationName string
297
297
  */
298
- export const generateLambdaRequestTemplate = (
299
- tableName: string,
300
- operation: string,
301
- operationName: string,
302
- ctx: TransformerContextProvider,
303
- ): string =>
298
+ export const generateLambdaRequestTemplate = (tableName: string, operation: string, operationName: string): string =>
304
299
  printBlock('Invoke RDS Lambda data source')(
305
300
  compoundExpression([
306
301
  set(ref('lambdaInput'), obj({})),
@@ -310,7 +305,6 @@ export const generateLambdaRequestTemplate = (
310
305
  set(ref('lambdaInput.operationName'), str(operationName)),
311
306
  set(ref('lambdaInput.args.metadata'), obj({})),
312
307
  set(ref('lambdaInput.args.metadata.keys'), list([])),
313
- constructNonScalarFieldsStatement(tableName, ctx),
314
308
  qref(
315
309
  methodCall(ref('lambdaInput.args.metadata.keys.addAll'), methodCall(ref('util.defaultIfNull'), ref('ctx.stash.keys'), list([]))),
316
310
  ),
@@ -372,14 +366,3 @@ export const generateDefaultLambdaResponseMappingTemplate = (isSyncEnabled: bool
372
366
 
373
367
  return printBlock('ResponseTemplate')(compoundExpression(statements));
374
368
  };
375
-
376
- export const getNonScalarFields = (object: ObjectTypeDefinitionNode | undefined, ctx: TransformerContextProvider): string[] => {
377
- if (!object) {
378
- return [];
379
- }
380
- const enums = ctx.output.getTypeDefinitionsOfKind(Kind.ENUM_TYPE_DEFINITION) as EnumTypeDefinitionNode[];
381
- return object.fields?.filter((f: FieldDefinitionNode) => isArrayOrObject(f.type, enums)).map((f) => f.name.value) || [];
382
- };
383
-
384
- export const constructNonScalarFieldsStatement = (tableName: string, ctx: TransformerContextProvider): Expression =>
385
- set(ref('lambdaInput.args.metadata.nonScalarFields'), list(getNonScalarFields(ctx.output.getObject(tableName), ctx).map(str)));