@aws-amplify/graphql-index-transformer 1.2.9-test-tag-1.0 → 1.2.10-rds.0
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +5 -1
- package/lib/graphql-index-transformer.d.ts +13 -0
- package/lib/graphql-index-transformer.d.ts.map +1 -0
- package/lib/graphql-index-transformer.js +143 -0
- package/lib/graphql-index-transformer.js.map +1 -0
- package/lib/graphql-primary-key-transformer.d.ts +15 -0
- package/lib/graphql-primary-key-transformer.d.ts.map +1 -0
- package/lib/graphql-primary-key-transformer.js +144 -0
- package/lib/graphql-primary-key-transformer.js.map +1 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +10 -0
- package/lib/index.js.map +1 -0
- package/lib/resolvers/generators/dynamodb-vtl-generator.d.ts +8 -0
- package/lib/resolvers/generators/dynamodb-vtl-generator.d.ts.map +1 -0
- package/lib/resolvers/generators/dynamodb-vtl-generator.js +51 -0
- package/lib/resolvers/generators/dynamodb-vtl-generator.js.map +1 -0
- package/lib/resolvers/generators/index.d.ts +4 -0
- package/lib/resolvers/generators/index.d.ts.map +1 -0
- package/lib/resolvers/generators/index.js +20 -0
- package/lib/resolvers/generators/index.js.map +1 -0
- package/lib/resolvers/generators/rds-vtl-generator.d.ts +10 -0
- package/lib/resolvers/generators/rds-vtl-generator.d.ts.map +1 -0
- package/lib/resolvers/generators/rds-vtl-generator.js +65 -0
- package/lib/resolvers/generators/rds-vtl-generator.js.map +1 -0
- package/lib/resolvers/generators/vtl-generator.d.ts +7 -0
- package/lib/resolvers/generators/vtl-generator.d.ts.map +1 -0
- package/lib/resolvers/generators/vtl-generator.js +3 -0
- package/lib/resolvers/generators/vtl-generator.js.map +1 -0
- package/lib/resolvers/index.d.ts +3 -0
- package/lib/resolvers/index.d.ts.map +1 -0
- package/lib/resolvers/index.js +19 -0
- package/lib/resolvers/index.js.map +1 -0
- package/lib/resolvers/resolvers.d.ts +23 -0
- package/lib/resolvers/resolvers.d.ts.map +1 -0
- package/lib/resolvers/resolvers.js +569 -0
- package/lib/resolvers/resolvers.js.map +1 -0
- package/lib/schema.d.ts +13 -0
- package/lib/schema.d.ts.map +1 -0
- package/lib/schema.js +340 -0
- package/lib/schema.js.map +1 -0
- package/lib/types.d.ts +15 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +3 -0
- package/lib/types.js.map +1 -0
- package/lib/utils.d.ts +7 -0
- package/lib/utils.d.ts.map +1 -0
- package/lib/utils.js +84 -0
- package/lib/utils.js.map +1 -0
- package/package.json +7 -7
package/CHANGELOG.md
CHANGED
@@ -3,7 +3,11 @@
|
|
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
|
-
## [1.2.
|
6
|
+
## [1.2.10-rds.0](https://github.com/aws-amplify/amplify-category-api/compare/@aws-amplify/graphql-index-transformer@1.2.9...@aws-amplify/graphql-index-transformer@1.2.10-rds.0) (2023-08-07)
|
7
|
+
|
8
|
+
**Note:** Version bump only for package @aws-amplify/graphql-index-transformer
|
9
|
+
|
10
|
+
## [1.2.9](https://github.com/aws-amplify/amplify-category-api/compare/@aws-amplify/graphql-index-transformer@1.2.8...@aws-amplify/graphql-index-transformer@1.2.9) (2023-07-21)
|
7
11
|
|
8
12
|
**Note:** Version bump only for package @aws-amplify/graphql-index-transformer
|
9
13
|
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import { TransformerPluginBase } from '@aws-amplify/graphql-transformer-core';
|
2
|
+
import { TransformerContextProvider, TransformerSchemaVisitStepContextProvider, TransformerTransformSchemaStepContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
|
3
|
+
import { DirectiveNode, FieldDefinitionNode, InterfaceTypeDefinitionNode, ObjectTypeDefinitionNode } from 'graphql';
|
4
|
+
export declare class IndexTransformer extends TransformerPluginBase {
|
5
|
+
private directiveList;
|
6
|
+
private resolverMap;
|
7
|
+
constructor();
|
8
|
+
field: (parent: ObjectTypeDefinitionNode | InterfaceTypeDefinitionNode, definition: FieldDefinitionNode, directive: DirectiveNode, context: TransformerSchemaVisitStepContextProvider) => void;
|
9
|
+
after: (ctx: TransformerContextProvider) => void;
|
10
|
+
transformSchema: (ctx: TransformerTransformSchemaStepContextProvider) => void;
|
11
|
+
generateResolvers: (ctx: TransformerContextProvider) => void;
|
12
|
+
}
|
13
|
+
//# sourceMappingURL=graphql-index-transformer.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"graphql-index-transformer.d.ts","sourceRoot":"","sources":["../src/graphql-index-transformer.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,qBAAqB,EACtB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,0BAA0B,EAE1B,yCAAyC,EACzC,6CAA6C,EAC9C,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,aAAa,EAEb,mBAAmB,EACnB,2BAA2B,EAE3B,wBAAwB,EACzB,MAAM,SAAS,CAAC;AAejB,qBAAa,gBAAiB,SAAQ,qBAAqB;IACzD,OAAO,CAAC,aAAa,CAAqC;IAE1D,OAAO,CAAC,WAAW,CAAuD;;IAM1E,KAAK,WACK,wBAAwB,GAAG,2BAA2B,cAClD,mBAAmB,aACpB,aAAa,WACf,yCAAyC,KACjD,IAAI,CAsBL;IAEK,KAAK,QAAS,0BAA0B,KAAG,IAAI,CASpD;IAEF,eAAe,QAAS,6CAA6C,KAAG,IAAI,CAQ1E;IAEF,iBAAiB,QAAS,0BAA0B,KAAG,IAAI,CAKzD;CACH"}
|
@@ -0,0 +1,143 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.IndexTransformer = void 0;
|
4
|
+
const graphql_transformer_core_1 = require("@aws-amplify/graphql-transformer-core");
|
5
|
+
const graphql_1 = require("graphql");
|
6
|
+
const graphql_transformer_common_1 = require("graphql-transformer-common");
|
7
|
+
const resolvers_1 = require("./resolvers");
|
8
|
+
const schema_1 = require("./schema");
|
9
|
+
const utils_1 = require("./utils");
|
10
|
+
const directiveName = 'index';
|
11
|
+
const directiveDefinition = `
|
12
|
+
directive @${directiveName}(name: String, sortKeyFields: [String], queryField: String) repeatable on FIELD_DEFINITION
|
13
|
+
`;
|
14
|
+
class IndexTransformer extends graphql_transformer_core_1.TransformerPluginBase {
|
15
|
+
constructor() {
|
16
|
+
super('amplify-index-transformer', directiveDefinition);
|
17
|
+
this.directiveList = [];
|
18
|
+
this.resolverMap = new Map();
|
19
|
+
this.field = (parent, definition, directive, context) => {
|
20
|
+
const directiveWrapped = new graphql_transformer_core_1.DirectiveWrapper(directive);
|
21
|
+
const args = directiveWrapped.getArguments({
|
22
|
+
object: parent,
|
23
|
+
field: definition,
|
24
|
+
directive,
|
25
|
+
}, (0, graphql_transformer_core_1.generateGetArgumentsInput)(context.transformParameters));
|
26
|
+
args.sortKeyFields = getOrGenerateDefaultSortKeyFields(args);
|
27
|
+
args.name = getOrGenerateDefaultName(args);
|
28
|
+
args.queryField = getOrGenerateDefaultQueryField(context, args);
|
29
|
+
args.sortKey = [];
|
30
|
+
validate(args, context);
|
31
|
+
this.directiveList.push(args);
|
32
|
+
};
|
33
|
+
this.after = (ctx) => {
|
34
|
+
if (!ctx.isProjectUsingDataStore())
|
35
|
+
return;
|
36
|
+
this.resolverMap.forEach((syncVTLContent, resource) => {
|
37
|
+
if (syncVTLContent) {
|
38
|
+
(0, resolvers_1.constructSyncVTL)(syncVTLContent, resource);
|
39
|
+
}
|
40
|
+
});
|
41
|
+
};
|
42
|
+
this.transformSchema = (ctx) => {
|
43
|
+
const context = ctx;
|
44
|
+
for (const config of this.directiveList) {
|
45
|
+
(0, schema_1.ensureQueryField)(config, context);
|
46
|
+
(0, schema_1.addKeyConditionInputs)(config, context);
|
47
|
+
(0, schema_1.updateMutationConditionInput)(config, context);
|
48
|
+
}
|
49
|
+
};
|
50
|
+
this.generateResolvers = (ctx) => {
|
51
|
+
for (const config of this.directiveList) {
|
52
|
+
(0, resolvers_1.appendSecondaryIndex)(config, ctx);
|
53
|
+
(0, resolvers_1.updateResolversForIndex)(config, ctx, this.resolverMap);
|
54
|
+
}
|
55
|
+
};
|
56
|
+
}
|
57
|
+
}
|
58
|
+
exports.IndexTransformer = IndexTransformer;
|
59
|
+
const getOrGenerateDefaultName = (config) => {
|
60
|
+
if (config.name) {
|
61
|
+
return config.name;
|
62
|
+
}
|
63
|
+
if (config.name === null) {
|
64
|
+
throw new Error('Explicit null value not allowed for name field on @index');
|
65
|
+
}
|
66
|
+
return (0, utils_1.generateKeyAndQueryNameForConfig)(config);
|
67
|
+
};
|
68
|
+
const getOrGenerateDefaultQueryField = (context, config) => {
|
69
|
+
const autoIndexQueryNamesIsEnabled = context.transformParameters.enableAutoIndexQueryNames;
|
70
|
+
if (config.queryField === null || (!autoIndexQueryNamesIsEnabled && !config.queryField)) {
|
71
|
+
return null;
|
72
|
+
}
|
73
|
+
if (config.queryField) {
|
74
|
+
return config.queryField;
|
75
|
+
}
|
76
|
+
return (0, utils_1.generateKeyAndQueryNameForConfig)(config);
|
77
|
+
};
|
78
|
+
const getOrGenerateDefaultSortKeyFields = (config) => {
|
79
|
+
if (!config.sortKeyFields) {
|
80
|
+
return [];
|
81
|
+
}
|
82
|
+
if (!Array.isArray(config.sortKeyFields)) {
|
83
|
+
return [config.sortKeyFields];
|
84
|
+
}
|
85
|
+
return config.sortKeyFields;
|
86
|
+
};
|
87
|
+
const validate = (config, ctx) => {
|
88
|
+
const { name, object, field, sortKeyFields } = config;
|
89
|
+
(0, utils_1.validateNotSelfReferencing)(config);
|
90
|
+
const modelDirective = object.directives.find((directive) => directive.name.value === 'model');
|
91
|
+
if (!modelDirective) {
|
92
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`The @${directiveName} directive may only be added to object definitions annotated with @model.`);
|
93
|
+
}
|
94
|
+
config.modelDirective = modelDirective;
|
95
|
+
const fieldMap = new Map();
|
96
|
+
for (const objectField of object.fields) {
|
97
|
+
fieldMap.set(objectField.name.value, objectField);
|
98
|
+
for (const peerDirective of objectField.directives) {
|
99
|
+
if (peerDirective === config.directive) {
|
100
|
+
continue;
|
101
|
+
}
|
102
|
+
if (peerDirective.name.value === 'primaryKey') {
|
103
|
+
const hasSortFields = peerDirective.arguments.some((arg) => { var _a; return arg.name.value === 'sortKeyFields' && ((_a = arg.value.values) === null || _a === void 0 ? void 0 : _a.length) > 0; });
|
104
|
+
config.primaryKeyField = objectField;
|
105
|
+
if (!hasSortFields && objectField.name.value === field.name.value) {
|
106
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`Invalid @index '${name}'. You may not create an index where the partition key ` +
|
107
|
+
'is the same as that of the primary key unless the primary key has a sort field. ' +
|
108
|
+
'You cannot have a local secondary index without a sort key in the primary key.');
|
109
|
+
}
|
110
|
+
}
|
111
|
+
if (peerDirective.name.value === directiveName &&
|
112
|
+
peerDirective.arguments.some((arg) => arg.name.value === 'name' && arg.value.value === name)) {
|
113
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`You may only supply one @${directiveName} with the name '${name}' on type '${object.name.value}'.`);
|
114
|
+
}
|
115
|
+
}
|
116
|
+
for (const peerDirective of objectField.directives) {
|
117
|
+
const hasSortFields = peerDirective.arguments.some((arg) => { var _a; return arg.name.value === 'sortKeyFields' && ((_a = arg.value.values) === null || _a === void 0 ? void 0 : _a.length) > 0; });
|
118
|
+
if (!ctx.transformParameters.secondaryKeyAsGSI &&
|
119
|
+
!hasSortFields &&
|
120
|
+
objectField == config.primaryKeyField &&
|
121
|
+
objectField.name.value === field.name.value) {
|
122
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`Invalid @index '${name}'. You may not create an index where the partition key ` +
|
123
|
+
'is the same as that of the primary key unless the index has a sort field. ' +
|
124
|
+
'You cannot have a local secondary index without a sort key in the index.');
|
125
|
+
}
|
126
|
+
}
|
127
|
+
}
|
128
|
+
const enums = ctx.output.getTypeDefinitionsOfKind(graphql_1.Kind.ENUM_TYPE_DEFINITION);
|
129
|
+
if (!(0, graphql_transformer_common_1.isScalarOrEnum)(field.type, enums) || (0, graphql_transformer_common_1.isListType)(field.type)) {
|
130
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`Index '${name}' on type '${object.name.value}.${field.name.value}' cannot be a non-scalar.`);
|
131
|
+
}
|
132
|
+
for (const sortKeyFieldName of sortKeyFields) {
|
133
|
+
const sortField = fieldMap.get(sortKeyFieldName);
|
134
|
+
if (!sortField) {
|
135
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`Can't find field '${sortKeyFieldName}' in ${object.name.value}, but it was specified in index '${name}'.`);
|
136
|
+
}
|
137
|
+
if (!(0, graphql_transformer_common_1.isScalarOrEnum)(sortField.type, enums) || (0, graphql_transformer_common_1.isListType)(sortField.type)) {
|
138
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`The sort key of index '${name}' on type '${object.name.value}.${sortField.name.value}' cannot be a non-scalar.`);
|
139
|
+
}
|
140
|
+
config.sortKey.push(sortField);
|
141
|
+
}
|
142
|
+
};
|
143
|
+
//# sourceMappingURL=graphql-index-transformer.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"graphql-index-transformer.js","sourceRoot":"","sources":["../src/graphql-index-transformer.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import { TransformerPluginBase } from '@aws-amplify/graphql-transformer-core';
|
2
|
+
import { TransformerContextProvider, TransformerSchemaVisitStepContextProvider, TransformerTransformSchemaStepContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
|
3
|
+
import { DirectiveNode, FieldDefinitionNode, InterfaceTypeDefinitionNode, ObjectTypeDefinitionNode } from 'graphql';
|
4
|
+
import { PrimaryKeyDirectiveConfiguration } from './types';
|
5
|
+
export declare class PrimaryKeyTransformer extends TransformerPluginBase {
|
6
|
+
private directiveList;
|
7
|
+
private resolverMap;
|
8
|
+
constructor();
|
9
|
+
field: (parent: ObjectTypeDefinitionNode | InterfaceTypeDefinitionNode, definition: FieldDefinitionNode, directive: DirectiveNode, context: TransformerSchemaVisitStepContextProvider) => void;
|
10
|
+
after: (ctx: TransformerContextProvider) => void;
|
11
|
+
transformSchema: (ctx: TransformerTransformSchemaStepContextProvider) => void;
|
12
|
+
generateResolvers: (ctx: TransformerContextProvider) => void;
|
13
|
+
}
|
14
|
+
export declare function updateListField(config: PrimaryKeyDirectiveConfiguration, ctx: TransformerContextProvider): void;
|
15
|
+
//# sourceMappingURL=graphql-primary-key-transformer.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"graphql-primary-key-transformer.d.ts","sourceRoot":"","sources":["../src/graphql-primary-key-transformer.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,qBAAqB,EAEtB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,0BAA0B,EAE1B,yCAAyC,EACzC,6CAA6C,EAC9C,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,aAAa,EAEb,mBAAmB,EACnB,2BAA2B,EAE3B,wBAAwB,EACzB,MAAM,SAAS,CAAC;AAajB,OAAO,EAAE,gCAAgC,EAAE,MAAM,SAAS,CAAC;AAQ3D,qBAAa,qBAAsB,SAAQ,qBAAqB;IAC9D,OAAO,CAAC,aAAa,CAA0C;IAE/D,OAAO,CAAC,WAAW,CAAuD;;IAM1E,KAAK,WACK,wBAAwB,GAAG,2BAA2B,cAClD,mBAAmB,aACpB,aAAa,WACf,yCAAyC,KACjD,IAAI,CAqBL;IAEK,KAAK,QAAS,0BAA0B,KAAG,IAAI,CASpD;IAEF,eAAe,QAAS,6CAA6C,KAAG,IAAI,CAW1E;IAEF,iBAAiB,QAAS,0BAA0B,KAAG,IAAI,CAMzD;CACH;AAwED,wBAAgB,eAAe,CAAC,MAAM,EAAE,gCAAgC,EAAE,GAAG,EAAE,0BAA0B,GAAG,IAAI,CAoC/G"}
|
@@ -0,0 +1,144 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.updateListField = exports.PrimaryKeyTransformer = void 0;
|
4
|
+
const graphql_transformer_core_1 = require("@aws-amplify/graphql-transformer-core");
|
5
|
+
const graphql_1 = require("graphql");
|
6
|
+
const graphql_transformer_common_1 = require("graphql-transformer-common");
|
7
|
+
const resolvers_1 = require("./resolvers/resolvers");
|
8
|
+
const schema_1 = require("./schema");
|
9
|
+
const utils_1 = require("./utils");
|
10
|
+
const directiveName = 'primaryKey';
|
11
|
+
const directiveDefinition = `
|
12
|
+
directive @${directiveName}(sortKeyFields: [String]) on FIELD_DEFINITION
|
13
|
+
`;
|
14
|
+
class PrimaryKeyTransformer extends graphql_transformer_core_1.TransformerPluginBase {
|
15
|
+
constructor() {
|
16
|
+
super('amplify-primary-key-transformer', directiveDefinition);
|
17
|
+
this.directiveList = [];
|
18
|
+
this.resolverMap = new Map();
|
19
|
+
this.field = (parent, definition, directive, context) => {
|
20
|
+
const directiveWrapped = new graphql_transformer_core_1.DirectiveWrapper(directive);
|
21
|
+
const args = directiveWrapped.getArguments({
|
22
|
+
object: parent,
|
23
|
+
field: definition,
|
24
|
+
directive,
|
25
|
+
}, (0, graphql_transformer_core_1.generateGetArgumentsInput)(context.transformParameters));
|
26
|
+
if (!args.sortKeyFields) {
|
27
|
+
args.sortKeyFields = [];
|
28
|
+
}
|
29
|
+
else if (!Array.isArray(args.sortKeyFields)) {
|
30
|
+
args.sortKeyFields = [args.sortKeyFields];
|
31
|
+
}
|
32
|
+
args.sortKey = [];
|
33
|
+
validate(args, context);
|
34
|
+
this.directiveList.push(args);
|
35
|
+
};
|
36
|
+
this.after = (ctx) => {
|
37
|
+
if (!ctx.isProjectUsingDataStore())
|
38
|
+
return;
|
39
|
+
this.resolverMap.forEach((syncVTLContent, resource) => {
|
40
|
+
if (syncVTLContent) {
|
41
|
+
(0, resolvers_1.constructSyncVTL)(syncVTLContent, resource);
|
42
|
+
}
|
43
|
+
});
|
44
|
+
};
|
45
|
+
this.transformSchema = (ctx) => {
|
46
|
+
const context = ctx;
|
47
|
+
for (const config of this.directiveList) {
|
48
|
+
(0, schema_1.updateGetField)(config, context);
|
49
|
+
updateListField(config, context);
|
50
|
+
(0, schema_1.updateInputObjects)(config, context);
|
51
|
+
(0, schema_1.removeAutoCreatedPrimaryKey)(config, context);
|
52
|
+
(0, schema_1.addKeyConditionInputs)(config, context);
|
53
|
+
(0, schema_1.updateMutationConditionInput)(config, context);
|
54
|
+
}
|
55
|
+
};
|
56
|
+
this.generateResolvers = (ctx) => {
|
57
|
+
for (const config of this.directiveList) {
|
58
|
+
const dbInfo = ctx.modelToDatasourceMap.get(config.object.name.value);
|
59
|
+
const vtlGenerator = (0, resolvers_1.getVTLGenerator)(dbInfo);
|
60
|
+
vtlGenerator.generatePrimaryKeyVTL(config, ctx, this.resolverMap);
|
61
|
+
}
|
62
|
+
};
|
63
|
+
}
|
64
|
+
}
|
65
|
+
exports.PrimaryKeyTransformer = PrimaryKeyTransformer;
|
66
|
+
function validate(config, ctx) {
|
67
|
+
const { object, field, sortKeyFields } = config;
|
68
|
+
(0, utils_1.validateNotSelfReferencing)(config);
|
69
|
+
const modelDirective = object.directives.find((directive) => {
|
70
|
+
return directive.name.value === 'model';
|
71
|
+
});
|
72
|
+
if (!modelDirective) {
|
73
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`The @${directiveName} directive may only be added to object definitions annotated with @model.`);
|
74
|
+
}
|
75
|
+
config.modelDirective = modelDirective;
|
76
|
+
const fieldMap = new Map();
|
77
|
+
for (const objectField of object.fields) {
|
78
|
+
fieldMap.set(objectField.name.value, objectField);
|
79
|
+
if (field === objectField) {
|
80
|
+
continue;
|
81
|
+
}
|
82
|
+
for (const directive of objectField.directives) {
|
83
|
+
if (directive.name.value === directiveName) {
|
84
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`You may only supply one primary key on type '${object.name.value}'.`);
|
85
|
+
}
|
86
|
+
}
|
87
|
+
}
|
88
|
+
if (!(0, graphql_transformer_common_1.isNonNullType)(field.type)) {
|
89
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`The primary key on type '${object.name.value}' must reference non-null fields.`);
|
90
|
+
}
|
91
|
+
const enums = ctx.output.getTypeDefinitionsOfKind(graphql_1.Kind.ENUM_TYPE_DEFINITION);
|
92
|
+
if (!(0, graphql_transformer_common_1.isScalarOrEnum)(field.type, enums) || (0, graphql_transformer_common_1.isListType)(field.type)) {
|
93
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`The primary key on type '${object.name.value}.${field.name.value}' cannot be a non-scalar.`);
|
94
|
+
}
|
95
|
+
for (const sortKeyFieldName of sortKeyFields) {
|
96
|
+
const sortField = fieldMap.get(sortKeyFieldName);
|
97
|
+
if (!sortField) {
|
98
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`Can't find field '${sortKeyFieldName}' in ${object.name.value}, but it was specified in the primary key.`);
|
99
|
+
}
|
100
|
+
if (!(0, graphql_transformer_common_1.isScalarOrEnum)(sortField.type, enums) || (0, graphql_transformer_common_1.isListType)(sortField.type)) {
|
101
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`The primary key's sort key on type '${object.name.value}.${sortField.name.value}' cannot be a non-scalar.`);
|
102
|
+
}
|
103
|
+
if (!(0, graphql_transformer_common_1.isNonNullType)(sortField.type)) {
|
104
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`The primary key on type '${object.name.value}' must reference non-null fields.`);
|
105
|
+
}
|
106
|
+
if (!(0, utils_1.validateNotOwnerAuth)(sortKeyFieldName, config, ctx)) {
|
107
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`The primary key's sort key type '${sortKeyFieldName}' cannot be used as an owner @auth field too. Please use another field for the sort key.`);
|
108
|
+
}
|
109
|
+
config.sortKey.push(sortField);
|
110
|
+
}
|
111
|
+
}
|
112
|
+
function updateListField(config, ctx) {
|
113
|
+
const resolverName = (0, utils_1.lookupResolverName)(config, ctx, 'list');
|
114
|
+
let query = ctx.output.getQuery();
|
115
|
+
if (!(resolverName && query)) {
|
116
|
+
return;
|
117
|
+
}
|
118
|
+
let listField = query.fields.find((field) => field.name.value === resolverName);
|
119
|
+
if (listField) {
|
120
|
+
const args = [(0, schema_1.createHashField)(config)];
|
121
|
+
const dbInfo = ctx.modelToDatasourceMap.get(config.object.name.value);
|
122
|
+
if ((dbInfo === null || dbInfo === void 0 ? void 0 : dbInfo.dbType) !== 'MySQL') {
|
123
|
+
const sortField = (0, schema_1.tryAndCreateSortField)(config, ctx);
|
124
|
+
if (sortField) {
|
125
|
+
args.push(sortField);
|
126
|
+
}
|
127
|
+
}
|
128
|
+
if (Array.isArray(listField.arguments)) {
|
129
|
+
args.push(...listField.arguments);
|
130
|
+
}
|
131
|
+
args.push((0, graphql_transformer_common_1.makeInputValueDefinition)('sortDirection', (0, graphql_transformer_common_1.makeNamedType)('ModelSortDirection')));
|
132
|
+
(0, schema_1.ensureModelSortDirectionEnum)(ctx);
|
133
|
+
listField = { ...listField, arguments: args };
|
134
|
+
query = {
|
135
|
+
...query,
|
136
|
+
fields: query.fields.map((field) => {
|
137
|
+
return field.name.value === listField.name.value ? listField : field;
|
138
|
+
}),
|
139
|
+
};
|
140
|
+
ctx.output.updateObject(query);
|
141
|
+
}
|
142
|
+
}
|
143
|
+
exports.updateListField = updateListField;
|
144
|
+
//# sourceMappingURL=graphql-primary-key-transformer.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"graphql-primary-key-transformer.js","sourceRoot":"","sources":["../src/graphql-primary-key-transformer.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC"}
|
package/lib/index.js
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.attributeTypeFromType = exports.PrimaryKeyTransformer = exports.IndexTransformer = void 0;
|
4
|
+
var graphql_index_transformer_1 = require("./graphql-index-transformer");
|
5
|
+
Object.defineProperty(exports, "IndexTransformer", { enumerable: true, get: function () { return graphql_index_transformer_1.IndexTransformer; } });
|
6
|
+
var graphql_primary_key_transformer_1 = require("./graphql-primary-key-transformer");
|
7
|
+
Object.defineProperty(exports, "PrimaryKeyTransformer", { enumerable: true, get: function () { return graphql_primary_key_transformer_1.PrimaryKeyTransformer; } });
|
8
|
+
var resolvers_1 = require("./resolvers/resolvers");
|
9
|
+
Object.defineProperty(exports, "attributeTypeFromType", { enumerable: true, get: function () { return resolvers_1.attributeTypeFromType; } });
|
10
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,yEAA+D;AAAtD,6HAAA,gBAAgB,OAAA;AACzB,qFAA0E;AAAjE,wIAAA,qBAAqB,OAAA;AAC9B,mDAA8D;AAArD,kHAAA,qBAAqB,OAAA"}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { TransformerContextProvider, TransformerResolverProvider } from '@aws-amplify/graphql-transformer-interfaces';
|
2
|
+
import { IndexDirectiveConfiguration, PrimaryKeyDirectiveConfiguration } from '../../types';
|
3
|
+
import { IndexVTLGenerator } from './vtl-generator';
|
4
|
+
export declare class DynamoDBIndexVTLGenerator implements IndexVTLGenerator {
|
5
|
+
generateIndexQueryRequestTemplate(config: IndexDirectiveConfiguration, ctx: TransformerContextProvider, tableName: string, operationName: string): string;
|
6
|
+
generatePrimaryKeyVTL: (config: PrimaryKeyDirectiveConfiguration, ctx: TransformerContextProvider, resolverMap: Map<TransformerResolverProvider, string>) => void;
|
7
|
+
}
|
8
|
+
//# sourceMappingURL=dynamodb-vtl-generator.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"dynamodb-vtl-generator.d.ts","sourceRoot":"","sources":["../../../src/resolvers/generators/dynamodb-vtl-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAuBtH,OAAO,EAAE,2BAA2B,EAAE,gCAAgC,EAAE,MAAM,aAAa,CAAC;AAC5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,qBAAa,yBAA0B,YAAW,iBAAiB;IACjE,iCAAiC,CAC/B,MAAM,EAAE,2BAA2B,EACnC,GAAG,EAAE,0BAA0B,EAC/B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GACpB,MAAM;IAmET,qBAAqB,WACX,gCAAgC,OACnC,0BAA0B,eAClB,IAAI,2BAA2B,EAAE,MAAM,CAAC,KACpD,IAAI,CAGL;CACH"}
|
@@ -0,0 +1,51 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.DynamoDBIndexVTLGenerator = void 0;
|
4
|
+
const graphql_mapping_template_1 = require("graphql-mapping-template");
|
5
|
+
const graphql_transformer_common_1 = require("graphql-transformer-common");
|
6
|
+
const resolvers_1 = require("../resolvers");
|
7
|
+
class DynamoDBIndexVTLGenerator {
|
8
|
+
constructor() {
|
9
|
+
this.generatePrimaryKeyVTL = (config, ctx, resolverMap) => {
|
10
|
+
(0, resolvers_1.replaceDdbPrimaryKey)(config, ctx);
|
11
|
+
(0, resolvers_1.updateResolvers)(config, ctx, resolverMap);
|
12
|
+
};
|
13
|
+
}
|
14
|
+
generateIndexQueryRequestTemplate(config, ctx, tableName, operationName) {
|
15
|
+
const { name, object, queryField } = config;
|
16
|
+
if (!(name && queryField)) {
|
17
|
+
throw new Error('Expected name and queryField to be defined while generating resolver.');
|
18
|
+
}
|
19
|
+
const authFilter = (0, graphql_mapping_template_1.ref)('ctx.stash.authFilter');
|
20
|
+
const requestVariable = 'QueryRequest';
|
21
|
+
return (0, graphql_mapping_template_1.print)((0, graphql_mapping_template_1.compoundExpression)([
|
22
|
+
(0, resolvers_1.setQuerySnippet)(config, ctx, false),
|
23
|
+
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('limit'), (0, graphql_mapping_template_1.ref)(`util.defaultIfNull($context.args.limit, ${graphql_transformer_common_1.ResourceConstants.DEFAULT_PAGE_LIMIT})`)),
|
24
|
+
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)(requestVariable), (0, graphql_mapping_template_1.obj)({
|
25
|
+
version: (0, graphql_mapping_template_1.str)(graphql_mapping_template_1.RESOLVER_VERSION_ID),
|
26
|
+
operation: (0, graphql_mapping_template_1.str)('Query'),
|
27
|
+
limit: (0, graphql_mapping_template_1.ref)('limit'),
|
28
|
+
query: (0, graphql_mapping_template_1.ref)(graphql_transformer_common_1.ResourceConstants.SNIPPETS.ModelQueryExpression),
|
29
|
+
index: (0, graphql_mapping_template_1.str)(name),
|
30
|
+
})),
|
31
|
+
(0, graphql_mapping_template_1.ifElse)((0, graphql_mapping_template_1.raw)(`!$util.isNull($ctx.args.sortDirection)
|
32
|
+
&& $ctx.args.sortDirection == "DESC"`), (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)(`${requestVariable}.scanIndexForward`), (0, graphql_mapping_template_1.bool)(false)), (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)(`${requestVariable}.scanIndexForward`), (0, graphql_mapping_template_1.bool)(true))),
|
33
|
+
(0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.ref)('context.args.nextToken'), (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)(`${requestVariable}.nextToken`), (0, graphql_mapping_template_1.ref)('context.args.nextToken')), true),
|
34
|
+
(0, graphql_mapping_template_1.ifElse)((0, graphql_mapping_template_1.not)((0, graphql_mapping_template_1.isNullOrEmpty)(authFilter)), (0, graphql_mapping_template_1.compoundExpression)([
|
35
|
+
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('filter'), authFilter),
|
36
|
+
(0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.not)((0, graphql_mapping_template_1.isNullOrEmpty)((0, graphql_mapping_template_1.ref)('ctx.args.filter'))), (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('filter'), (0, graphql_mapping_template_1.obj)({ and: (0, graphql_mapping_template_1.list)([(0, graphql_mapping_template_1.ref)('filter'), (0, graphql_mapping_template_1.ref)('ctx.args.filter')]) }))),
|
37
|
+
]), (0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.not)((0, graphql_mapping_template_1.isNullOrEmpty)((0, graphql_mapping_template_1.ref)('ctx.args.filter'))), (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('filter'), (0, graphql_mapping_template_1.ref)('ctx.args.filter')))),
|
38
|
+
(0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.not)((0, graphql_mapping_template_1.isNullOrEmpty)((0, graphql_mapping_template_1.ref)('filter'))), (0, graphql_mapping_template_1.compoundExpression)([
|
39
|
+
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('filterExpression'), (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.parseJson'), (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.transform.toDynamoDBFilterExpression'), (0, graphql_mapping_template_1.ref)('filter')))),
|
40
|
+
(0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.isNullOrEmpty)((0, graphql_mapping_template_1.ref)('filterExpression')), (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.error'), (0, graphql_mapping_template_1.str)('Unable to process the filter expression'), (0, graphql_mapping_template_1.str)('Unrecognized Filter'))),
|
41
|
+
(0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.not)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.isNullOrBlank'), (0, graphql_mapping_template_1.ref)('filterExpression.expression'))), (0, graphql_mapping_template_1.compoundExpression)([
|
42
|
+
(0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.equals)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('filterExpression.expressionValues.size')), (0, graphql_mapping_template_1.int)(0)), (0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('filterExpression.remove'), (0, graphql_mapping_template_1.str)('expressionValues')))),
|
43
|
+
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)(`${requestVariable}.filter`), (0, graphql_mapping_template_1.ref)('filterExpression')),
|
44
|
+
])),
|
45
|
+
])),
|
46
|
+
(0, graphql_mapping_template_1.raw)(`$util.toJson($${requestVariable})`),
|
47
|
+
]));
|
48
|
+
}
|
49
|
+
}
|
50
|
+
exports.DynamoDBIndexVTLGenerator = DynamoDBIndexVTLGenerator;
|
51
|
+
//# sourceMappingURL=dynamodb-vtl-generator.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"dynamodb-vtl-generator.js","sourceRoot":"","sources":["../../../src/resolvers/generators/dynamodb-vtl-generator.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/resolvers/generators/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC"}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
|
+
};
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
+
__exportStar(require("./vtl-generator"), exports);
|
18
|
+
__exportStar(require("./dynamodb-vtl-generator"), exports);
|
19
|
+
__exportStar(require("./rds-vtl-generator"), exports);
|
20
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/resolvers/generators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,2DAAyC;AACzC,sDAAoC"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { TransformerContextProvider, TransformerResolverProvider } from '@aws-amplify/graphql-transformer-interfaces';
|
2
|
+
import { IndexDirectiveConfiguration, PrimaryKeyDirectiveConfiguration } from '../../types';
|
3
|
+
import { IndexVTLGenerator } from './vtl-generator';
|
4
|
+
export declare class RDSIndexVTLGenerator implements IndexVTLGenerator {
|
5
|
+
generateIndexQueryRequestTemplate(config: IndexDirectiveConfiguration, ctx: TransformerContextProvider, tableName: string, operationName: string): string;
|
6
|
+
generatePrimaryKeyVTL: (config: PrimaryKeyDirectiveConfiguration, ctx: TransformerContextProvider, resolverMap: Map<TransformerResolverProvider, string>) => void;
|
7
|
+
updateResolvers: (config: PrimaryKeyDirectiveConfiguration, ctx: TransformerContextProvider, resolverMap: Map<TransformerResolverProvider, string>) => void;
|
8
|
+
setPrimaryKeySnippet: (config: PrimaryKeyDirectiveConfiguration) => string;
|
9
|
+
}
|
10
|
+
//# sourceMappingURL=rds-vtl-generator.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"rds-vtl-generator.d.ts","sourceRoot":"","sources":["../../../src/resolvers/generators/rds-vtl-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAGtH,OAAO,EAAE,2BAA2B,EAAE,gCAAgC,EAAE,MAAM,aAAa,CAAC;AAE5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,qBAAa,oBAAqB,YAAW,iBAAiB;IAC5D,iCAAiC,CAC/B,MAAM,EAAE,2BAA2B,EACnC,GAAG,EAAE,0BAA0B,EAC/B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GACpB,MAAM;IAwBT,qBAAqB,WACX,gCAAgC,OACnC,0BAA0B,eAClB,IAAI,2BAA2B,EAAE,MAAM,CAAC,KACpD,IAAI,CAEL;IAEF,eAAe,WACL,gCAAgC,OACnC,0BAA0B,eAClB,IAAI,2BAA2B,EAAE,MAAM,CAAC,KACpD,IAAI,CA+BL;IAEF,oBAAoB,WAAY,gCAAgC,KAAG,MAAM,CAUvE;CACH"}
|
@@ -0,0 +1,65 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.RDSIndexVTLGenerator = void 0;
|
4
|
+
const graphql_mapping_template_1 = require("graphql-mapping-template");
|
5
|
+
const resolvers_1 = require("../resolvers");
|
6
|
+
class RDSIndexVTLGenerator {
|
7
|
+
constructor() {
|
8
|
+
this.generatePrimaryKeyVTL = (config, ctx, resolverMap) => {
|
9
|
+
this.updateResolvers(config, ctx, resolverMap);
|
10
|
+
};
|
11
|
+
this.updateResolvers = (config, ctx, resolverMap) => {
|
12
|
+
const getResolver = (0, resolvers_1.getResolverObject)(config, ctx, 'get');
|
13
|
+
const listResolver = (0, resolvers_1.getResolverObject)(config, ctx, 'list');
|
14
|
+
const createResolver = (0, resolvers_1.getResolverObject)(config, ctx, 'create');
|
15
|
+
const updateResolver = (0, resolvers_1.getResolverObject)(config, ctx, 'update');
|
16
|
+
const deleteResolver = (0, resolvers_1.getResolverObject)(config, ctx, 'delete');
|
17
|
+
const primaryKeySnippet = this.setPrimaryKeySnippet(config);
|
18
|
+
if (getResolver) {
|
19
|
+
(0, resolvers_1.addIndexToResolverSlot)(getResolver, [primaryKeySnippet]);
|
20
|
+
}
|
21
|
+
if (listResolver) {
|
22
|
+
const sortDirectionValidation = (0, graphql_mapping_template_1.printBlock)('Validate the sort direction input')((0, graphql_mapping_template_1.compoundExpression)((0, resolvers_1.validateSortDirectionInput)(config, true)));
|
23
|
+
(0, resolvers_1.addIndexToResolverSlot)(listResolver, [primaryKeySnippet, sortDirectionValidation]);
|
24
|
+
}
|
25
|
+
if (createResolver) {
|
26
|
+
(0, resolvers_1.addIndexToResolverSlot)(createResolver, [primaryKeySnippet]);
|
27
|
+
}
|
28
|
+
if (updateResolver) {
|
29
|
+
(0, resolvers_1.addIndexToResolverSlot)(updateResolver, [primaryKeySnippet]);
|
30
|
+
}
|
31
|
+
if (deleteResolver) {
|
32
|
+
(0, resolvers_1.addIndexToResolverSlot)(deleteResolver, [primaryKeySnippet]);
|
33
|
+
}
|
34
|
+
};
|
35
|
+
this.setPrimaryKeySnippet = (config) => {
|
36
|
+
const expressions = [(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('keys'), (0, graphql_mapping_template_1.list)([])), (0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('keys.add'), (0, graphql_mapping_template_1.str)(config.field.name.value)))];
|
37
|
+
config.sortKeyFields.map((field) => {
|
38
|
+
expressions.push((0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('keys.add'), (0, graphql_mapping_template_1.str)(field))));
|
39
|
+
});
|
40
|
+
expressions.push((0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('ctx.stash.put'), (0, graphql_mapping_template_1.str)('keys'), (0, graphql_mapping_template_1.ref)('keys'))));
|
41
|
+
return (0, graphql_mapping_template_1.printBlock)('Set the primary key information in metadata')((0, graphql_mapping_template_1.compoundExpression)(expressions));
|
42
|
+
};
|
43
|
+
}
|
44
|
+
generateIndexQueryRequestTemplate(config, ctx, tableName, operationName) {
|
45
|
+
return (0, graphql_mapping_template_1.printBlock)('Invoke RDS Lambda data source')((0, graphql_mapping_template_1.compoundExpression)([
|
46
|
+
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('lambdaInput'), (0, graphql_mapping_template_1.obj)({})),
|
47
|
+
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('lambdaInput.args'), (0, graphql_mapping_template_1.obj)({})),
|
48
|
+
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('lambdaInput.table'), (0, graphql_mapping_template_1.str)(tableName)),
|
49
|
+
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('lambdaInput.operation'), (0, graphql_mapping_template_1.str)('INDEX')),
|
50
|
+
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('lambdaInput.operationName'), (0, graphql_mapping_template_1.str)(operationName)),
|
51
|
+
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('lambdaInput.args.metadata'), (0, graphql_mapping_template_1.obj)({})),
|
52
|
+
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('lambdaInput.args.metadata.keys'), (0, graphql_mapping_template_1.list)([])),
|
53
|
+
(0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('lambdaInput.args.metadata.keys.addAll'), (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.defaultIfNull'), (0, graphql_mapping_template_1.ref)('ctx.stash.keys'), (0, graphql_mapping_template_1.list)([])))),
|
54
|
+
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('lambdaInput.args.input'), (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.defaultIfNull'), (0, graphql_mapping_template_1.ref)('ctx.stash.defaultValues'), (0, graphql_mapping_template_1.obj)({}))),
|
55
|
+
(0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('lambdaInput.args.input.putAll'), (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.defaultIfNull'), (0, graphql_mapping_template_1.ref)('context.arguments'), (0, graphql_mapping_template_1.obj)({})))),
|
56
|
+
(0, graphql_mapping_template_1.obj)({
|
57
|
+
version: (0, graphql_mapping_template_1.str)('2018-05-29'),
|
58
|
+
operation: (0, graphql_mapping_template_1.str)('Invoke'),
|
59
|
+
payload: (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.toJson'), (0, graphql_mapping_template_1.ref)('lambdaInput')),
|
60
|
+
}),
|
61
|
+
]));
|
62
|
+
}
|
63
|
+
}
|
64
|
+
exports.RDSIndexVTLGenerator = RDSIndexVTLGenerator;
|
65
|
+
//# sourceMappingURL=rds-vtl-generator.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"rds-vtl-generator.js","sourceRoot":"","sources":["../../../src/resolvers/generators/rds-vtl-generator.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import { TransformerContextProvider, TransformerResolverProvider } from '@aws-amplify/graphql-transformer-interfaces';
|
2
|
+
import { IndexDirectiveConfiguration, PrimaryKeyDirectiveConfiguration } from '../../types';
|
3
|
+
export interface IndexVTLGenerator {
|
4
|
+
generatePrimaryKeyVTL(config: PrimaryKeyDirectiveConfiguration, ctx: TransformerContextProvider, resolverMap: Map<TransformerResolverProvider, string>): void;
|
5
|
+
generateIndexQueryRequestTemplate(config: IndexDirectiveConfiguration, ctx: TransformerContextProvider, tableName: string, operationName: string): string;
|
6
|
+
}
|
7
|
+
//# sourceMappingURL=vtl-generator.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"vtl-generator.d.ts","sourceRoot":"","sources":["../../../src/resolvers/generators/vtl-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAEtH,OAAO,EAAE,2BAA2B,EAAE,gCAAgC,EAAE,MAAM,aAAa,CAAC;AAE5F,MAAM,WAAW,iBAAiB;IAChC,qBAAqB,CACnB,MAAM,EAAE,gCAAgC,EACxC,GAAG,EAAE,0BAA0B,EAC/B,WAAW,EAAE,GAAG,CAAC,2BAA2B,EAAE,MAAM,CAAC,GACpD,IAAI,CAAC;IACR,iCAAiC,CAC/B,MAAM,EAAE,2BAA2B,EACnC,GAAG,EAAE,0BAA0B,EAC/B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GACpB,MAAM,CAAC;CACX"}
|