@aws-amplify/graphql-api-construct 1.4.1 → 1.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/.jsii +384 -253
  2. package/API.md +16 -4
  3. package/CHANGELOG.md +12 -0
  4. package/lib/amplify-dynamodb-table-wrapper.js +1 -1
  5. package/lib/amplify-graphql-api.d.ts +1 -1
  6. package/lib/amplify-graphql-api.js +16 -5
  7. package/lib/amplify-graphql-definition.d.ts +4 -3
  8. package/lib/amplify-graphql-definition.js +8 -16
  9. package/lib/index.d.ts +3 -1
  10. package/lib/index.js +19 -2
  11. package/lib/internal/data-source-config.d.ts +21 -2
  12. package/lib/internal/data-source-config.js +72 -33
  13. package/lib/internal/model-type-name.d.ts +2 -2
  14. package/lib/internal/model-type-name.js +4 -4
  15. package/lib/model-datasource-strategy.d.ts +116 -0
  16. package/lib/model-datasource-strategy.js +10 -0
  17. package/lib/sql-model-datasource-strategy.d.ts +1 -1
  18. package/lib/sql-model-datasource-strategy.js +5 -1
  19. package/lib/types.d.ts +16 -124
  20. package/lib/types.js +1 -1
  21. package/node_modules/@aws-amplify/graphql-auth-transformer/CHANGELOG.md +8 -0
  22. package/node_modules/@aws-amplify/graphql-auth-transformer/package.json +10 -10
  23. package/node_modules/@aws-amplify/graphql-default-value-transformer/CHANGELOG.md +8 -0
  24. package/node_modules/@aws-amplify/graphql-default-value-transformer/package.json +7 -7
  25. package/node_modules/@aws-amplify/graphql-function-transformer/CHANGELOG.md +8 -0
  26. package/node_modules/@aws-amplify/graphql-function-transformer/package.json +6 -6
  27. package/node_modules/@aws-amplify/graphql-http-transformer/CHANGELOG.md +8 -0
  28. package/node_modules/@aws-amplify/graphql-http-transformer/package.json +6 -6
  29. package/node_modules/@aws-amplify/graphql-index-transformer/CHANGELOG.md +8 -0
  30. package/node_modules/@aws-amplify/graphql-index-transformer/package.json +7 -7
  31. package/node_modules/@aws-amplify/graphql-maps-to-transformer/CHANGELOG.md +8 -0
  32. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/assets/mapping-lambda.zip +0 -0
  33. package/node_modules/@aws-amplify/graphql-maps-to-transformer/package.json +10 -10
  34. package/node_modules/@aws-amplify/graphql-model-transformer/API.md +16 -0
  35. package/node_modules/@aws-amplify/graphql-model-transformer/CHANGELOG.md +12 -0
  36. package/node_modules/@aws-amplify/graphql-model-transformer/lib/index.d.ts +1 -0
  37. package/node_modules/@aws-amplify/graphql-model-transformer/lib/index.d.ts.map +1 -1
  38. package/node_modules/@aws-amplify/graphql-model-transformer/lib/index.js +3 -1
  39. package/node_modules/@aws-amplify/graphql-model-transformer/lib/index.js.map +1 -1
  40. package/node_modules/@aws-amplify/graphql-model-transformer/lib/rds-lambda.zip +0 -0
  41. package/node_modules/@aws-amplify/graphql-model-transformer/lib/rds-notification-lambda.zip +0 -0
  42. package/node_modules/@aws-amplify/graphql-model-transformer/lib/rds-patching-lambda.zip +0 -0
  43. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/resolver.d.ts +4 -2
  44. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/resolver.d.ts.map +1 -1
  45. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/resolver.js +30 -86
  46. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/resolver.js.map +1 -1
  47. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/rds-model-resource-generator.d.ts +2 -3
  48. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/rds-model-resource-generator.d.ts.map +1 -1
  49. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/rds-model-resource-generator.js +36 -18
  50. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/rds-model-resource-generator.js.map +1 -1
  51. package/node_modules/@aws-amplify/graphql-model-transformer/package.json +6 -6
  52. package/node_modules/@aws-amplify/graphql-predictions-transformer/CHANGELOG.md +8 -0
  53. package/node_modules/@aws-amplify/graphql-predictions-transformer/lib/predictionsLambdaFunction.zip +0 -0
  54. package/node_modules/@aws-amplify/graphql-predictions-transformer/package.json +6 -6
  55. package/node_modules/@aws-amplify/graphql-relational-transformer/CHANGELOG.md +10 -0
  56. package/node_modules/@aws-amplify/graphql-relational-transformer/package.json +8 -8
  57. package/node_modules/@aws-amplify/graphql-searchable-transformer/CHANGELOG.md +8 -0
  58. package/node_modules/@aws-amplify/graphql-searchable-transformer/lib/streaming-lambda.zip +0 -0
  59. package/node_modules/@aws-amplify/graphql-searchable-transformer/package.json +7 -7
  60. package/node_modules/@aws-amplify/graphql-sql-transformer/CHANGELOG.md +10 -0
  61. package/node_modules/@aws-amplify/graphql-sql-transformer/lib/graphql-sql-transformer.d.ts.map +1 -1
  62. package/node_modules/@aws-amplify/graphql-sql-transformer/lib/graphql-sql-transformer.js +15 -1
  63. package/node_modules/@aws-amplify/graphql-sql-transformer/lib/graphql-sql-transformer.js.map +1 -1
  64. package/node_modules/@aws-amplify/graphql-sql-transformer/package.json +7 -7
  65. package/node_modules/@aws-amplify/graphql-transformer/API.md +3 -1
  66. package/node_modules/@aws-amplify/graphql-transformer/CHANGELOG.md +10 -0
  67. package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.d.ts +2 -1
  68. package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.d.ts.map +1 -1
  69. package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.js +2 -1
  70. package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.js.map +1 -1
  71. package/node_modules/@aws-amplify/graphql-transformer/package.json +15 -15
  72. package/node_modules/@aws-amplify/graphql-transformer/src/graphql-transformer.ts +4 -1
  73. package/node_modules/@aws-amplify/graphql-transformer-core/API.md +35 -5
  74. package/node_modules/@aws-amplify/graphql-transformer-core/CHANGELOG.md +12 -0
  75. package/node_modules/@aws-amplify/graphql-transformer-core/lib/index.d.ts +1 -1
  76. package/node_modules/@aws-amplify/graphql-transformer-core/lib/index.d.ts.map +1 -1
  77. package/node_modules/@aws-amplify/graphql-transformer-core/lib/index.js +19 -13
  78. package/node_modules/@aws-amplify/graphql-transformer-core/lib/index.js.map +1 -1
  79. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/transform.d.ts.map +1 -1
  80. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/transform.js +20 -2
  81. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/transform.js.map +1 -1
  82. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/types.d.ts +2 -1
  83. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/types.d.ts.map +1 -1
  84. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/index.d.ts +24 -6
  85. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/index.d.ts.map +1 -1
  86. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/index.js +16 -14
  87. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/index.js.map +1 -1
  88. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/stack-manager.d.ts.map +1 -1
  89. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/stack-manager.js.map +1 -1
  90. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/graphql-utils.d.ts +14 -0
  91. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/graphql-utils.d.ts.map +1 -0
  92. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/graphql-utils.js +23 -0
  93. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/graphql-utils.js.map +1 -0
  94. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/index.d.ts +2 -0
  95. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/index.d.ts.map +1 -1
  96. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/index.js +16 -0
  97. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/index.js.map +1 -1
  98. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-datasource-strategy-utils.d.ts +11 -0
  99. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-datasource-strategy-utils.d.ts.map +1 -0
  100. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-datasource-strategy-utils.js +84 -0
  101. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-datasource-strategy-utils.js.map +1 -0
  102. package/node_modules/@aws-amplify/graphql-transformer-core/package.json +4 -4
  103. package/node_modules/@aws-amplify/graphql-transformer-interfaces/API.md +89 -5
  104. package/node_modules/@aws-amplify/graphql-transformer-interfaces/CHANGELOG.md +6 -0
  105. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/graphql-api-provider.d.ts +0 -17
  106. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/graphql-api-provider.d.ts.map +1 -1
  107. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/graphql-api-provider.js.map +1 -1
  108. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/index.d.ts +2 -1
  109. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/index.d.ts.map +1 -1
  110. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/index.js +1 -0
  111. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/index.js.map +1 -1
  112. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/model-datasource/index.d.ts +2 -0
  113. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/model-datasource/index.d.ts.map +1 -0
  114. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/model-datasource/index.js +18 -0
  115. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/model-datasource/index.js.map +1 -0
  116. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/model-datasource/types.d.ts +55 -0
  117. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/model-datasource/types.d.ts.map +1 -0
  118. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/model-datasource/types.js +3 -0
  119. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/model-datasource/types.js.map +1 -0
  120. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transform-host-provider.d.ts +2 -1
  121. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transform-host-provider.d.ts.map +1 -1
  122. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/index.d.ts +1 -1
  123. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/index.d.ts.map +1 -1
  124. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/transformer-context-provider.d.ts +6 -4
  125. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/transformer-context-provider.d.ts.map +1 -1
  126. package/node_modules/@aws-amplify/graphql-transformer-interfaces/package.json +3 -2
  127. package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/graphql-api-provider.ts +1 -41
  128. package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/index.ts +1 -4
  129. package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/model-datasource/index.ts +1 -0
  130. package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/model-datasource/types.ts +163 -0
  131. package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/transform-host-provider.ts +1 -1
  132. package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/transformer-context/index.ts +4 -3
  133. package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/transformer-context/transformer-context-provider.ts +6 -7
  134. package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/transformer-context/transformer-datasource-provider.ts +2 -2
  135. package/node_modules/@aws-amplify/graphql-transformer-interfaces/tsconfig.tsbuildinfo +1 -1
  136. package/node_modules/graphql-transformer-common/API.md +11 -4
  137. package/node_modules/graphql-transformer-common/CHANGELOG.md +6 -0
  138. package/node_modules/graphql-transformer-common/lib/ResourceConstants.d.ts +11 -4
  139. package/node_modules/graphql-transformer-common/lib/ResourceConstants.d.ts.map +1 -1
  140. package/node_modules/graphql-transformer-common/lib/ResourceConstants.js +11 -4
  141. package/node_modules/graphql-transformer-common/lib/ResourceConstants.js.map +1 -1
  142. package/node_modules/graphql-transformer-common/package.json +2 -3
  143. package/package.json +17 -17
  144. package/src/amplify-graphql-api.ts +20 -5
  145. package/src/amplify-graphql-definition.ts +8 -15
  146. package/src/index.ts +3 -11
  147. package/src/internal/data-source-config.ts +89 -35
  148. package/src/internal/model-type-name.ts +3 -3
  149. package/src/model-datasource-strategy.ts +149 -0
  150. package/src/sql-model-datasource-strategy.ts +1 -1
  151. package/src/types.ts +17 -151
  152. /package/node_modules/{graphql-transformer-common → @aws-amplify/graphql-transformer-interfaces}/LICENSE +0 -0
@@ -407,19 +407,26 @@ export class ResourceConstants {
407
407
  OpenSearchStreamingLambdaIAMRoleLogicalID: string;
408
408
  OpenSearchStreamingLambdaFunctionLogicalID: string;
409
409
  OpenSearchDataSourceLogicalID: string;
410
+ SQLLambdaAliasLogicalID: string;
410
411
  SQLLambdaIAMRoleLogicalID: string;
411
412
  SQLLambdaLogAccessPolicy: string;
412
- SQLPatchingLambdaIAMRoleLogicalID: string;
413
413
  SQLLambdaLogicalID: string;
414
+ SQLStackName: string;
415
+ SQLVpcEndpointLogicalIDPrefix: string;
416
+ SQLLambdaDataSourceLogicalID: string;
417
+ SQLPatchingLambdaIAMRoleLogicalID: string;
414
418
  SQLPatchingLambdaLogAccessPolicy: string;
415
419
  SQLPatchingLambdaLogicalID: string;
416
- SQLLambdaDataSourceLogicalID: string;
417
420
  SQLPatchingSubscriptionLogicalID: string;
418
421
  SQLPatchingTopicLogicalID: string;
419
- SQLLambdaAliasLogicalID: string;
422
+ AmplifySQLLayerNotificationTopicName: string;
423
+ AmplifySQLLayerNotificationTopicAccount: string;
424
+ SQLLayerVersionManifestBucket: string;
425
+ SQLLayerVersionManifestBucketRegion: string;
426
+ SQLLayerVersionManifestKeyPrefix: string;
420
427
  SQLLambdaLayerVersionLogicalID: string;
421
428
  SQLLayerMappingID: string;
422
- SQLVpcEndpointLogicalIDPrefix: string;
429
+ SQLLayerVersionCustomResourceID: string;
423
430
  NoneDataSource: string;
424
431
  AuthCognitoUserPoolLogicalID: string;
425
432
  AuthCognitoUserPoolNativeClientLogicalID: string;
@@ -3,6 +3,12 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [4.26.2](https://github.com/aws-amplify/amplify-category-api/compare/graphql-transformer-common@4.26.1...graphql-transformer-common@4.26.2) (2023-11-18)
7
+
8
+ ### Bug Fixes
9
+
10
+ - regionalize lambda layer patching SNS topics ([#2079](https://github.com/aws-amplify/amplify-category-api/issues/2079)) ([6006c86](https://github.com/aws-amplify/amplify-category-api/commit/6006c86cd4ee624b24c184fab523fcdcdb38be63))
11
+
6
12
  ## [4.26.1](https://github.com/aws-amplify/amplify-category-api/compare/graphql-transformer-common@4.26.0...graphql-transformer-common@4.26.1) (2023-11-16)
7
13
 
8
14
  ### Bug Fixes
@@ -19,19 +19,26 @@ export declare class ResourceConstants {
19
19
  OpenSearchStreamingLambdaIAMRoleLogicalID: string;
20
20
  OpenSearchStreamingLambdaFunctionLogicalID: string;
21
21
  OpenSearchDataSourceLogicalID: string;
22
+ SQLLambdaAliasLogicalID: string;
22
23
  SQLLambdaIAMRoleLogicalID: string;
23
24
  SQLLambdaLogAccessPolicy: string;
24
- SQLPatchingLambdaIAMRoleLogicalID: string;
25
25
  SQLLambdaLogicalID: string;
26
+ SQLStackName: string;
27
+ SQLVpcEndpointLogicalIDPrefix: string;
28
+ SQLLambdaDataSourceLogicalID: string;
29
+ SQLPatchingLambdaIAMRoleLogicalID: string;
26
30
  SQLPatchingLambdaLogAccessPolicy: string;
27
31
  SQLPatchingLambdaLogicalID: string;
28
- SQLLambdaDataSourceLogicalID: string;
29
32
  SQLPatchingSubscriptionLogicalID: string;
30
33
  SQLPatchingTopicLogicalID: string;
31
- SQLLambdaAliasLogicalID: string;
34
+ AmplifySQLLayerNotificationTopicName: string;
35
+ AmplifySQLLayerNotificationTopicAccount: string;
36
+ SQLLayerVersionManifestBucket: string;
37
+ SQLLayerVersionManifestBucketRegion: string;
38
+ SQLLayerVersionManifestKeyPrefix: string;
32
39
  SQLLambdaLayerVersionLogicalID: string;
33
40
  SQLLayerMappingID: string;
34
- SQLVpcEndpointLogicalIDPrefix: string;
41
+ SQLLayerVersionCustomResourceID: string;
35
42
  NoneDataSource: string;
36
43
  AuthCognitoUserPoolLogicalID: string;
37
44
  AuthCognitoUserPoolNativeClientLogicalID: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ResourceConstants.d.ts","sourceRoot":"","sources":["../src/ResourceConstants.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAiB;IAC5B,OAAc,IAAI,SAAU;IAE5B,OAAc,kBAAkB,SAAO;IAEvC,OAAc,6BAA6B,SAAO;IAElD,OAAc,6BAA6B,SAAO;IAElD,gBAAuB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAiD9B;IAEF,OAAc,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAiDtB;IAEF,OAAc,QAAQ,KAAM;IAE5B,OAAc,UAAU;;;;;;;MAYtB;IAEF,OAAc,OAAO;;;;;;;;;;;;;;;MAsBnB;IAEF,OAAc,QAAQ,KAAM;IAE5B,gBAAuB,QAAQ;;;;;;;;;;;;;;;MAe7B;CACH"}
1
+ {"version":3,"file":"ResourceConstants.d.ts","sourceRoot":"","sources":["../src/ResourceConstants.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAiB;IAC5B,OAAc,IAAI,SAAU;IAE5B,OAAc,kBAAkB,SAAO;IAEvC,OAAc,6BAA6B,SAAO;IAElD,OAAc,6BAA6B,SAAO;IAElD,gBAAuB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAoI9B;IAEF,OAAc,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAiDtB;IAEF,OAAc,QAAQ,KAAM;IAE5B,OAAc,UAAU;;;;;;;MAYtB;IAEF,OAAc,OAAO;;;;;;;;;;;;;;;MAsBnB;IAEF,OAAc,QAAQ,KAAM;IAE5B,gBAAuB,QAAQ;;;;;;;;;;;;;;;MAe7B;CACH"}
@@ -24,19 +24,26 @@ ResourceConstants.RESOURCES = {
24
24
  OpenSearchStreamingLambdaIAMRoleLogicalID: 'OpenSearchStreamingLambdaIAMRole',
25
25
  OpenSearchStreamingLambdaFunctionLogicalID: 'OpenSearchStreamingLambdaFunction',
26
26
  OpenSearchDataSourceLogicalID: 'OpenSearchDataSource',
27
+ SQLLambdaAliasLogicalID: 'SQLLambdaAlias',
27
28
  SQLLambdaIAMRoleLogicalID: 'SQLLambdaIAMRole',
28
29
  SQLLambdaLogAccessPolicy: 'SQLLambdaLogAccessPolicy',
29
- SQLPatchingLambdaIAMRoleLogicalID: 'SQLPatchingLambdaIAMRole',
30
30
  SQLLambdaLogicalID: 'SQLLambdaFunction',
31
+ SQLStackName: 'SqlApiStack',
32
+ SQLVpcEndpointLogicalIDPrefix: 'SQLVpcEndpoint',
33
+ SQLLambdaDataSourceLogicalID: 'SQLLambdaDataSource',
34
+ SQLPatchingLambdaIAMRoleLogicalID: 'SQLPatchingLambdaIAMRole',
31
35
  SQLPatchingLambdaLogAccessPolicy: 'SQLPatchingLambdaLogAccessPolicy',
32
36
  SQLPatchingLambdaLogicalID: 'SQLPatchingLambda',
33
- SQLLambdaDataSourceLogicalID: 'SQLLambdaDataSource',
34
37
  SQLPatchingSubscriptionLogicalID: 'SQLPatchingSubscription',
35
38
  SQLPatchingTopicLogicalID: 'SQLPatchingTopic',
36
- SQLLambdaAliasLogicalID: 'SQLLambdaAlias',
39
+ AmplifySQLLayerNotificationTopicName: 'AmplifySQLLayerNotification',
40
+ AmplifySQLLayerNotificationTopicAccount: '582037449441',
41
+ SQLLayerVersionManifestBucket: 'amplify-rds-layer-resources',
42
+ SQLLayerVersionManifestBucketRegion: 'us-east-1',
43
+ SQLLayerVersionManifestKeyPrefix: 'sql-layer-versions/',
37
44
  SQLLambdaLayerVersionLogicalID: 'SQLLambdaLayerVersion',
38
45
  SQLLayerMappingID: 'SQLLayerResourceMapping',
39
- SQLVpcEndpointLogicalIDPrefix: 'SQLVpcEndpoint',
46
+ SQLLayerVersionCustomResourceID: 'SQLLayerVersionCustomResource',
40
47
  NoneDataSource: 'NoneDataSource',
41
48
  AuthCognitoUserPoolLogicalID: 'AuthCognitoUserPool',
42
49
  AuthCognitoUserPoolNativeClientLogicalID: 'AuthCognitoUserPoolNativeClient',
@@ -1 +1 @@
1
- {"version":3,"file":"ResourceConstants.js","sourceRoot":"","sources":["../src/ResourceConstants.ts"],"names":[],"mappings":";;;AAAA,MAAa,iBAAiB;;AAA9B,8CAyKC;AAxKe,sBAAI,GAAG,MAAM,CAAC;AAEd,oCAAkB,GAAG,GAAG,CAAC;AAEzB,+CAA6B,GAAG,GAAG,CAAC;AAEpC,+CAA6B,GAAG,GAAG,CAAC;AAE3B,2BAAS,GAAG;IAEjC,mBAAmB,EAAE,YAAY;IACjC,sBAAsB,EAAE,eAAe;IACvC,eAAe,EAAE,eAAe;IAChC,cAAc,EAAE,gBAAgB;IAChC,gBAAgB,EAAE,kBAAkB;IAGpC,mCAAmC,EAAE,4BAA4B;IACjE,4BAA4B,EAAE,qBAAqB;IACnD,4CAA4C,EAAE,qCAAqC;IACnF,6CAA6C,EAAE,sCAAsC;IACrF,gCAAgC,EAAE,yBAAyB;IAG3D,gCAAgC,EAAE,yBAAyB;IAC3D,yBAAyB,EAAE,kBAAkB;IAC7C,yCAAyC,EAAE,kCAAkC;IAC7E,0CAA0C,EAAE,mCAAmC;IAC/E,6BAA6B,EAAE,sBAAsB;IAGrD,yBAAyB,EAAE,kBAAkB;IAC7C,wBAAwB,EAAE,0BAA0B;IACpD,iCAAiC,EAAE,0BAA0B;IAC7D,kBAAkB,EAAE,mBAAmB;IACvC,gCAAgC,EAAE,kCAAkC;IACpE,0BAA0B,EAAE,mBAAmB;IAC/C,4BAA4B,EAAE,qBAAqB;IACnD,gCAAgC,EAAE,yBAAyB;IAC3D,yBAAyB,EAAE,kBAAkB;IAC7C,uBAAuB,EAAE,gBAAgB;IACzC,8BAA8B,EAAE,uBAAuB;IACvD,iBAAiB,EAAE,yBAAyB;IAC5C,6BAA6B,EAAE,gBAAgB;IAG/C,cAAc,EAAE,gBAAgB;IAGhC,4BAA4B,EAAE,qBAAqB;IACnD,wCAAwC,EAAE,iCAAiC;IAC3E,oCAAoC,EAAE,6BAA6B;IAGnE,mCAAmC,EAAE,4BAA4B;IACjE,sCAAsC,EAAE,+BAA+B;IACvE,mCAAmC,EAAE,4BAA4B;CAClE,CAAC;AAEY,4BAAU,GAAG;IAEzB,GAAG,EAAE,KAAK;IACV,kBAAkB,EAAE,oBAAoB;IACxC,mBAAmB,EAAE,qBAAqB;IAG1C,cAAc,EAAE,gBAAgB;IAChC,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,gBAAgB;IAChC,qBAAqB,EAAE,uBAAuB;IAG9C,mBAAmB,EAAE,qBAAqB;IAC1C,0BAA0B,EAAE,4BAA4B;IACxD,2BAA2B,EAAE,6BAA6B;IAC1D,iCAAiC,EAAE,mCAAmC;IACtE,kCAAkC,EAAE,oCAAoC;IAGxE,8BAA8B,EAAE,gCAAgC;IAChE,iCAAiC,EAAE,mCAAmC;IACtE,iCAAiC,EAAE,mCAAmC;IACtE,kCAAkC,EAAE,oCAAoC;IACxE,4BAA4B,EAAE,8BAA8B;IAC5D,iDAAiD,EAAE,mDAAmD;IACtG,0BAA0B,EAAE,4BAA4B;IACxD,yBAAyB,EAAE,2BAA2B;IACtD,wBAAwB,EAAE,0BAA0B;IACpD,uCAAuC,EAAE,yCAAyC;IAClF,mCAAmC,EAAE,qCAAqC;IAG1E,2BAA2B,EAAE,6BAA6B;IAC1D,8BAA8B,EAAE,gCAAgC;IAChE,8BAA8B,EAAE,gCAAgC;IAChE,+BAA+B,EAAE,iCAAiC;IAClE,yBAAyB,EAAE,2BAA2B;IACtD,8CAA8C,EAAE,gDAAgD;IAChG,uBAAuB,EAAE,yBAAyB;IAClD,sBAAsB,EAAE,wBAAwB;IAChD,qBAAqB,EAAE,uBAAuB;IAC9C,oCAAoC,EAAE,sCAAsC;IAC5E,gCAAgC,EAAE,kCAAkC;IAGpE,qBAAqB,EAAE,uBAAuB;CAC/C,CAAC;AAEY,0BAAQ,GAAG,EAAE,CAAC;AAEd,4BAAU,GAAG;IAEzB,uBAAuB,EAAE,yBAAyB;IAGlD,6BAA6B,EAAE,+BAA+B;IAC9D,4BAA4B,EAAE,8BAA8B;IAC5D,6BAA6B,EAAE,+BAA+B;IAG9D,kBAAkB,EAAE,oBAAoB;IACxC,+BAA+B,EAAE,iCAAiC;CACnE,CAAC;AAEY,yBAAO,GAAG;IAEtB,wBAAwB,EAAE,0BAA0B;IACpD,sBAAsB,EAAE,qBAAqB;IAC7C,kBAAkB,EAAE,oBAAoB;IAGxC,sCAAsC,EAAE,wCAAwC;IAChF,6BAA6B,EAAE,+BAA+B;IAC9D,sBAAsB,EAAE,wBAAwB;IAChD,2BAA2B,EAAE,6BAA6B;IAG1D,mCAAmC,EAAE,qCAAqC;IAC1E,0BAA0B,EAAE,4BAA4B;IACxD,mBAAmB,EAAE,qBAAqB;IAC1C,wBAAwB,EAAE,0BAA0B;IAGpD,2BAA2B,EAAE,6BAA6B;IAC1D,qCAAqC,EAAE,mCAAmC;IAC1E,iCAAiC,EAAE,+BAA+B;CACnE,CAAC;AAEY,0BAAQ,GAAG,EAAE,CAAC;AAEL,0BAAQ,GAAG;IAChC,aAAa,EAAE,eAAe;IAC9B,QAAQ,EAAE,UAAU;IACpB,kBAAkB,EAAE,oBAAoB;IACxC,cAAc,EAAE,gBAAgB;IAChC,uBAAuB,EAAE,yBAAyB;IAClD,oBAAoB,EAAE,sBAAsB;IAC5C,eAAe,EAAE,iBAAiB;IAClC,gCAAgC,EAAE,0BAA0B;IAC5D,qCAAqC,EAAE,+BAA+B;IACtE,+BAA+B,EAAE,yBAAyB;IAC1D,yBAAyB,EAAE,mBAAmB;IAC9C,8BAA8B,EAAE,wBAAwB;IACxD,eAAe,EAAE,iBAAiB;IAClC,iBAAiB,EAAE,mBAAmB;CACvC,CAAC"}
1
+ {"version":3,"file":"ResourceConstants.js","sourceRoot":"","sources":["../src/ResourceConstants.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "graphql-transformer-common",
3
- "version": "4.26.1",
3
+ "version": "4.26.2",
4
4
  "description": "Common code and constants for AppSync Transformers",
5
5
  "repository": {
6
6
  "type": "git",
@@ -54,6 +54,5 @@
54
54
  "json",
55
55
  "node"
56
56
  ]
57
- },
58
- "gitHead": "317a141956493f0940bb506470259026edf3b7bc"
57
+ }
59
58
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-amplify/graphql-api-construct",
3
- "version": "1.4.1",
3
+ "version": "1.4.3",
4
4
  "description": "AppSync GraphQL Api Construct using Amplify GraphQL Transformer.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -75,20 +75,20 @@
75
75
  "dependencies": {
76
76
  "@aws-amplify/backend-output-schemas": "^0.4.0",
77
77
  "@aws-amplify/backend-output-storage": "^0.2.2",
78
- "@aws-amplify/graphql-auth-transformer": "3.2.1",
79
- "@aws-amplify/graphql-default-value-transformer": "2.1.10",
80
- "@aws-amplify/graphql-function-transformer": "2.1.9",
81
- "@aws-amplify/graphql-http-transformer": "2.1.9",
82
- "@aws-amplify/graphql-index-transformer": "2.2.1",
83
- "@aws-amplify/graphql-maps-to-transformer": "3.3.1",
84
- "@aws-amplify/graphql-model-transformer": "2.3.1",
85
- "@aws-amplify/graphql-predictions-transformer": "2.1.9",
86
- "@aws-amplify/graphql-relational-transformer": "2.2.1",
87
- "@aws-amplify/graphql-searchable-transformer": "2.3.1",
88
- "@aws-amplify/graphql-sql-transformer": "0.1.1",
89
- "@aws-amplify/graphql-transformer": "1.3.1",
90
- "@aws-amplify/graphql-transformer-core": "2.3.1",
91
- "@aws-amplify/graphql-transformer-interfaces": "3.3.0",
78
+ "@aws-amplify/graphql-auth-transformer": "3.2.3",
79
+ "@aws-amplify/graphql-default-value-transformer": "2.1.12",
80
+ "@aws-amplify/graphql-function-transformer": "2.1.11",
81
+ "@aws-amplify/graphql-http-transformer": "2.1.11",
82
+ "@aws-amplify/graphql-index-transformer": "2.2.3",
83
+ "@aws-amplify/graphql-maps-to-transformer": "3.3.3",
84
+ "@aws-amplify/graphql-model-transformer": "2.3.3",
85
+ "@aws-amplify/graphql-predictions-transformer": "2.1.11",
86
+ "@aws-amplify/graphql-relational-transformer": "2.2.3",
87
+ "@aws-amplify/graphql-searchable-transformer": "2.3.3",
88
+ "@aws-amplify/graphql-sql-transformer": "0.1.3",
89
+ "@aws-amplify/graphql-transformer": "1.3.3",
90
+ "@aws-amplify/graphql-transformer-core": "2.3.3",
91
+ "@aws-amplify/graphql-transformer-interfaces": "3.3.1",
92
92
  "@aws-amplify/platform-core": "^0.2.0",
93
93
  "@aws-amplify/plugin-types": "^0.4.1",
94
94
  "charenc": "^0.0.2",
@@ -97,7 +97,7 @@
97
97
  "graceful-fs": "^4.2.11",
98
98
  "graphql": "^15.5.0",
99
99
  "graphql-mapping-template": "4.20.12",
100
- "graphql-transformer-common": "4.26.1",
100
+ "graphql-transformer-common": "4.26.2",
101
101
  "hjson": "^3.2.2",
102
102
  "immer": "^9.0.12",
103
103
  "is-buffer": "^2.0.5",
@@ -164,5 +164,5 @@
164
164
  }
165
165
  }
166
166
  },
167
- "gitHead": "317a141956493f0940bb506470259026edf3b7bc"
167
+ "gitHead": "5256b5955ee204dd56f8074a43406852f8206c54"
168
168
  }
@@ -38,7 +38,6 @@ import type {
38
38
  IBackendOutputStorageStrategy,
39
39
  AddFunctionProps,
40
40
  ConflictResolution,
41
- SQLLambdaModelDataSourceStrategy,
42
41
  } from './types';
43
42
  import {
44
43
  convertAuthorizationModesToTransformerAuthConfig,
@@ -50,9 +49,10 @@ import {
50
49
  CodegenAssets,
51
50
  getAdditionalAuthenticationTypes,
52
51
  } from './internal';
53
- import { isSQLLambdaModelDataSourceStrategy } from './sql-model-datasource-strategy';
54
- import { parseDataSourceConfig } from './internal/data-source-config';
52
+ import { mapInterfaceCustomSqlStrategiesToImplementationStrategies, parseDataSourceConfig } from './internal/data-source-config';
55
53
  import { getStackForScope, walkAndProcessNodes } from './internal/construct-tree';
54
+ import { SQLLambdaModelDataSourceStrategy } from './model-datasource-strategy';
55
+ import { isSQLLambdaModelDataSourceStrategy } from './sql-model-datasource-strategy';
56
56
 
57
57
  /**
58
58
  * L3 Construct which invokes the Amplify Transformer Pattern over an input Graphql Schema.
@@ -209,8 +209,22 @@ export class AmplifyGraphqlApi extends Construct {
209
209
  ...parseDataSourceConfig(definition.dataSourceStrategies),
210
210
  };
211
211
 
212
+ // TODO: Normalize all of this once we start using strategies internally. Right now the data source configuration (VPC, connection info,
213
+ // etc) is separate from the DataSourceType, and singular
214
+ const customSqlDataSourceStrategies = mapInterfaceCustomSqlStrategiesToImplementationStrategies(
215
+ definition.customSqlDataSourceStrategies,
216
+ );
217
+ if (customSqlDataSourceStrategies.length > 0) {
218
+ executeTransformConfig = {
219
+ ...executeTransformConfig,
220
+ customSqlDataSourceStrategies,
221
+ };
222
+ }
223
+
212
224
  // TODO: Update this to support multiple definitions; right now we assume only one SQL data source type
213
- for (const strategy of Object.values(definition.dataSourceStrategies)) {
225
+ const modelStrategies = Object.values(definition.dataSourceStrategies).filter(isSQLLambdaModelDataSourceStrategy);
226
+ const customSqlStrategies = definition.customSqlDataSourceStrategies?.map((css) => css.strategy) ?? [];
227
+ for (const strategy of [...modelStrategies, ...customSqlStrategies]) {
214
228
  if (isSQLLambdaModelDataSourceStrategy(strategy)) {
215
229
  executeTransformConfig = this.extendTransformConfig(executeTransformConfig, strategy);
216
230
  break;
@@ -235,7 +249,7 @@ export class AmplifyGraphqlApi extends Construct {
235
249
  /**
236
250
  * Extends executeTransformConfig with fields for provisioning a SQL Lambda
237
251
  * @param executeTransformConfig the executeTransformConfig to extend
238
- * @param dataSourceDefinition the SQLLambdaModelDataSourceStrategy containing the SQL connection values to add to the transform config
252
+ * @param strategy the SQLLambdaModelDataSourceStrategy containing the SQL connection values to add to the transform config
239
253
  * @returns the extended configuration that includes SQL DB connection information
240
254
  */
241
255
  private extendTransformConfig(
@@ -243,6 +257,7 @@ export class AmplifyGraphqlApi extends Construct {
243
257
  strategy: SQLLambdaModelDataSourceStrategy,
244
258
  ): ExecuteTransformConfig {
245
259
  const extendedConfig = { ...executeTransformConfig };
260
+
246
261
  if (strategy.customSqlStatements) {
247
262
  extendedConfig.customQueries = new Map(Object.entries(strategy.customSqlStatements));
248
263
  }
@@ -1,7 +1,9 @@
1
1
  import * as os from 'os';
2
2
  import { SchemaFile } from 'aws-cdk-lib/aws-appsync';
3
- import { IAmplifyGraphqlDefinition, ModelDataSourceStrategy } from './types';
3
+ import { IAmplifyGraphqlDefinition } from './types';
4
4
  import { constructDataSourceStrategyMap } from './internal';
5
+ import { ModelDataSourceStrategy } from './model-datasource-strategy';
6
+ import { constructCustomSqlDataSourceStrategies } from './internal/data-source-config';
5
7
 
6
8
  export const DEFAULT_MODEL_DATA_SOURCE_STRATEGY: ModelDataSourceStrategy = {
7
9
  dbType: 'DYNAMODB',
@@ -18,8 +20,8 @@ export class AmplifyGraphqlDefinition {
18
20
  * **NOTE** The 'dataSourceStrategy' configuration option is in preview and is not recommended to use with production systems.
19
21
  *
20
22
  * @param schema the graphql input as a string
21
- * @param dataSourceStrategy the provisioning definition for datasources that resolve `@model`s in this schema. The DynamoDB from
22
- * CloudFormation will be used by default.
23
+ * @param dataSourceStrategy the provisioning definition for datasources that resolve `@model`s and custom SQL statements in this schema.
24
+ * The DynamoDB from CloudFormation will be used by default.
23
25
  * @experimental dataSourceStrategy
24
26
  * @returns a fully formed amplify graphql definition
25
27
  */
@@ -32,6 +34,7 @@ export class AmplifyGraphqlDefinition {
32
34
  functionSlots: [],
33
35
  referencedLambdaFunctions: {},
34
36
  dataSourceStrategies: constructDataSourceStrategyMap(schema, dataSourceStrategy),
37
+ customSqlDataSourceStrategies: constructCustomSqlDataSourceStrategies(schema, dataSourceStrategy),
35
38
  };
36
39
  }
37
40
 
@@ -45,12 +48,7 @@ export class AmplifyGraphqlDefinition {
45
48
  filePaths = [filePaths];
46
49
  }
47
50
  const schema = filePaths.map((filePath) => new SchemaFile({ filePath }).definition).join(os.EOL);
48
- return {
49
- schema,
50
- functionSlots: [],
51
- referencedLambdaFunctions: {},
52
- dataSourceStrategies: constructDataSourceStrategyMap(schema, DEFAULT_MODEL_DATA_SOURCE_STRATEGY),
53
- };
51
+ return AmplifyGraphqlDefinition.fromString(schema, DEFAULT_MODEL_DATA_SOURCE_STRATEGY);
54
52
  }
55
53
 
56
54
  /**
@@ -72,12 +70,7 @@ export class AmplifyGraphqlDefinition {
72
70
  filePaths = [filePaths];
73
71
  }
74
72
  const schema = filePaths.map((filePath) => new SchemaFile({ filePath }).definition).join(os.EOL);
75
- return {
76
- schema,
77
- functionSlots: [],
78
- referencedLambdaFunctions: {},
79
- dataSourceStrategies: constructDataSourceStrategyMap(schema, dataSourceStrategy),
80
- };
73
+ return AmplifyGraphqlDefinition.fromString(schema, dataSourceStrategy);
81
74
  }
82
75
 
83
76
  /**
package/src/index.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /* ATTENTION
2
2
  *
3
- * If you modify this file your must also modify packages/amplify-data-construct/src/index.ts to have the same exports
3
+ * If you modify this file you must also modify packages/amplify-data-construct/src/index.ts to have the same exports
4
4
  */
5
5
  export type {
6
6
  IAMAuthorizationConfig,
@@ -31,16 +31,6 @@ export type {
31
31
  IBackendOutputStorageStrategy,
32
32
  IBackendOutputEntry,
33
33
  AddFunctionProps,
34
- ModelDataSourceStrategy,
35
- DefaultDynamoDbModelDataSourceStrategy,
36
- AmplifyDynamoDbModelDataSourceStrategy,
37
- SQLLambdaModelDataSourceStrategy,
38
- ModelDataSourceStrategyDbType,
39
- VpcConfig,
40
- SubnetAvailabilityZone,
41
- SQLLambdaLayerMapping,
42
- SqlModelDataSourceDbConnectionConfig,
43
- ProvisionedConcurrencyConfig,
44
34
  } from './types';
45
35
  export { AmplifyGraphqlApi } from './amplify-graphql-api';
46
36
  export { AmplifyGraphqlDefinition } from './amplify-graphql-definition';
@@ -52,3 +42,5 @@ export {
52
42
  SSEType,
53
43
  StreamSpecification,
54
44
  } from './amplify-dynamodb-table-wrapper';
45
+ export { SQLLambdaModelDataSourceStrategyFactory } from './sql-model-datasource-strategy';
46
+ export * from './model-datasource-strategy';
@@ -1,46 +1,23 @@
1
+ import { parse } from 'graphql';
1
2
  import {
3
+ CustomSqlDataSourceStrategy as ImplementationCustomSqlDataSourceStrategy,
2
4
  DataSourceType,
3
- DynamoDBProvisionStrategy,
4
- SQLDBType,
5
5
  SQLLambdaModelProvisionStrategy,
6
6
  } from '@aws-amplify/graphql-transformer-interfaces';
7
- import { ModelDataSourceStrategy } from '../types';
7
+ import {
8
+ dataSourceStrategyToDataSourceType,
9
+ isSqlStrategy,
10
+ isQueryNode,
11
+ isMutationNode,
12
+ fieldsWithSqlDirective,
13
+ } from '@aws-amplify/graphql-transformer-core';
14
+ import { normalizeDbType } from '@aws-amplify/graphql-transformer-core/lib/utils';
15
+ import { CustomSqlDataSourceStrategy as InterfaceCustomSqlDataSourceStrategy, ModelDataSourceStrategy } from '../model-datasource-strategy';
8
16
 
9
17
  type DataSourceConfig = {
10
18
  modelToDatasourceMap: Map<string, DataSourceType>;
11
19
  };
12
20
 
13
- // TODO: Do away with this after we normalize database types throughout the internals
14
- const convertSQLDBType = (definitionDBType: 'MYSQL' | 'POSTGRES'): SQLDBType => (definitionDBType === 'MYSQL' ? 'MySQL' : 'Postgres');
15
-
16
- const convertToDataSourceType = (dataSourceStrategy: ModelDataSourceStrategy): DataSourceType => {
17
- if (dataSourceStrategy.dbType === 'DYNAMODB') {
18
- switch (dataSourceStrategy.provisionStrategy) {
19
- case 'DEFAULT':
20
- return {
21
- dbType: 'DDB',
22
- provisionDB: true,
23
- provisionStrategy: DynamoDBProvisionStrategy.DEFAULT,
24
- };
25
- case 'AMPLIFY_TABLE':
26
- return {
27
- dbType: 'DDB',
28
- provisionDB: true,
29
- provisionStrategy: DynamoDBProvisionStrategy.AMPLIFY_TABLE,
30
- };
31
- default:
32
- throw new Error(`Encountered unexpected provision strategy: ${(dataSourceStrategy as any).provisionStrategy}`);
33
- }
34
- } else if (dataSourceStrategy.dbType === 'MYSQL' || dataSourceStrategy.dbType === 'POSTGRES') {
35
- return {
36
- dbType: convertSQLDBType(dataSourceStrategy.dbType),
37
- provisionDB: false,
38
- provisionStrategy: SQLLambdaModelProvisionStrategy.DEFAULT,
39
- };
40
- }
41
- throw new Error(`Encountered unexpected database type ${dataSourceStrategy.dbType}`);
42
- };
43
-
44
21
  /**
45
22
  * An internal helper to convert from a map of model-to-ModelDataSourceStrategies to the map of model-to-DataSourceTypes that internal
46
23
  * transform processing requires. TODO: We can remove this once we refactor the internals to use ModelDataSourceStrategies natively.
@@ -48,10 +25,87 @@ const convertToDataSourceType = (dataSourceStrategy: ModelDataSourceStrategy): D
48
25
  export const parseDataSourceConfig = (dataSourceDefinitionMap: Record<string, ModelDataSourceStrategy>): DataSourceConfig => {
49
26
  const modelToDatasourceMap = new Map<string, DataSourceType>();
50
27
  for (const [key, value] of Object.entries(dataSourceDefinitionMap)) {
51
- const dataSourceType = convertToDataSourceType(value);
28
+ const dataSourceType = dataSourceStrategyToDataSourceType(value);
52
29
  modelToDatasourceMap.set(key, dataSourceType);
53
30
  }
54
31
  return {
55
32
  modelToDatasourceMap,
56
33
  };
57
34
  };
35
+
36
+ /**
37
+ * Creates an interface flavor of customSqlDataSourceStrategies from a factory method's schema and data source. Internally, this function
38
+ * scans the fields of `Query` and `Mutation` looking for fields annotated with the `@sql` directive and designates the specified
39
+ * dataSourceStrategy to fulfill those custom queries.
40
+ *
41
+ * Note that we do not scan for `Subscription` fields: `@sql` directives are not allowed on those, and it wouldn't make sense to do so
42
+ * anyway, since subscriptions are processed from an incoming Mutation, not as the result of a direct datasource access.
43
+ *
44
+ * TODO: Reword this when we refactor to use Strategies throughout the implementation rather than DataSources.
45
+ */
46
+ export const constructCustomSqlDataSourceStrategies = (
47
+ schema: string,
48
+ dataSourceStrategy: ModelDataSourceStrategy,
49
+ ): InterfaceCustomSqlDataSourceStrategy[] => {
50
+ if (!isSqlStrategy(dataSourceStrategy)) {
51
+ return [];
52
+ }
53
+
54
+ const parsedSchema = parse(schema);
55
+
56
+ const queryNode = parsedSchema.definitions.find(isQueryNode);
57
+ const mutationNode = parsedSchema.definitions.find(isMutationNode);
58
+ if (!queryNode && !mutationNode) {
59
+ return [];
60
+ }
61
+
62
+ const customSqlDataSourceStrategies: InterfaceCustomSqlDataSourceStrategy[] = [];
63
+
64
+ if (queryNode) {
65
+ const fields = fieldsWithSqlDirective(queryNode);
66
+ for (const field of fields) {
67
+ customSqlDataSourceStrategies.push({
68
+ typeName: 'Query',
69
+ fieldName: field.name.value,
70
+ strategy: dataSourceStrategy,
71
+ });
72
+ }
73
+ }
74
+
75
+ if (mutationNode) {
76
+ const fields = fieldsWithSqlDirective(mutationNode);
77
+ for (const field of fields) {
78
+ customSqlDataSourceStrategies.push({
79
+ typeName: 'Mutation',
80
+ fieldName: field.name.value,
81
+ strategy: dataSourceStrategy,
82
+ });
83
+ }
84
+ }
85
+
86
+ return customSqlDataSourceStrategies;
87
+ };
88
+
89
+ /**
90
+ * We currently use a different type structure to model strategies in the interface than we do in the implementation. This maps the
91
+ * interface CustomSqlDataSourceStrategy (which uses SQLLambdaModelDataSourceStrategy) to the implementation flavor (which uses
92
+ * DataSourceType).
93
+ *
94
+ * TODO: Remove this once we refactor the internals to use strategies rather than DataSourceTypes
95
+ */
96
+ export const mapInterfaceCustomSqlStrategiesToImplementationStrategies = (
97
+ strategies?: InterfaceCustomSqlDataSourceStrategy[],
98
+ ): ImplementationCustomSqlDataSourceStrategy[] => {
99
+ if (!strategies) {
100
+ return [];
101
+ }
102
+ return strategies.map((interfaceStrategy) => ({
103
+ fieldName: interfaceStrategy.fieldName,
104
+ typeName: interfaceStrategy.typeName,
105
+ dataSourceType: {
106
+ dbType: normalizeDbType(interfaceStrategy.strategy.dbType),
107
+ provisionDB: false,
108
+ provisionStrategy: SQLLambdaModelProvisionStrategy.DEFAULT,
109
+ },
110
+ }));
111
+ };
@@ -1,5 +1,5 @@
1
- import { ModelDataSourceStrategy } from '../types';
2
1
  import { Kind, ObjectTypeDefinitionNode, StringValueNode, parse } from 'graphql';
2
+ import { ModelDataSourceStrategy } from '../model-datasource-strategy';
3
3
 
4
4
  const MODEL_DIRECTIVE_NAME = 'model';
5
5
  const MANY_TO_MANY_DIRECTIVE_NAME = 'manyToMany';
@@ -8,7 +8,7 @@ const MANY_TO_MANY_DIRECTIVE_NAME = 'manyToMany';
8
8
  * @param schema graphql schema in SDL
9
9
  * @returns type names which model diretives are attached
10
10
  */
11
- export function getModelTypeNames(schema: string): string[] {
11
+ export const getModelTypeNames = (schema: string): string[] => {
12
12
  const parsedSchema = parse(schema);
13
13
  const nodesWithModelDirective = parsedSchema.definitions.filter(
14
14
  (obj) => obj.kind === Kind.OBJECT_TYPE_DEFINITION && obj.directives?.some((dir) => dir.name.value === MODEL_DIRECTIVE_NAME),
@@ -28,7 +28,7 @@ export function getModelTypeNames(schema: string): string[] {
28
28
  });
29
29
  });
30
30
  return modelKeys.filter((key, idx) => modelKeys.indexOf(key) === idx);
31
- }
31
+ };
32
32
 
33
33
  export const constructDataSourceStrategyMap = (
34
34
  schema: string,