Skip to content

Commit a40127f

Browse files
Added: support for js resolver
1 parent e6469b8 commit a40127f

File tree

4 files changed

+41
-2
lines changed

4 files changed

+41
-2
lines changed

examples/complete/main.tf

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,17 @@ EOF
251251
"None",
252252
]
253253
}
254+
255+
"Query.user" = {
256+
kind = "PIPELINE"
257+
type = "Query"
258+
field = "user"
259+
runtime = "APPSYNC_JS"
260+
code = file("src/index.js")
261+
functions = [
262+
"None",
263+
]
264+
}
254265
}
255266
}
256267

examples/complete/schema.graphql

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,15 @@ type Post {
77
title: String!
88
}
99

10+
type User {
11+
id: ID!
12+
name: String
13+
}
14+
1015
type Query {
1116
singlePost(id: ID!): Post
1217
none(dummyString: String!): String!
18+
user(id: ID!): User
1319
}
1420

1521
schema {

examples/complete/src/index.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// For more examples, refer this doc: https://docs.aws.amazon.com/appsync/latest/devguide/configuring-resolvers-js.html
2+
import { util } from "@aws-appsync/utils";
3+
4+
export function request(ctx) {
5+
return {};
6+
}
7+
8+
export function response(ctx) {
9+
return ctx.result.items;
10+
}

main.tf

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,8 +181,20 @@ resource "aws_appsync_resolver" "this" {
181181
field = each.value.field
182182
kind = lookup(each.value, "kind", null)
183183

184-
request_template = lookup(each.value, "request_template", tobool(lookup(each.value, "direct_lambda", false)) ? var.direct_lambda_request_template : "{}")
185-
response_template = lookup(each.value, "response_template", tobool(lookup(each.value, "direct_lambda", false)) ? var.direct_lambda_response_template : "{}")
184+
dynamic "runtime" {
185+
for_each = toset(lookup(each.value, "kind", null) == "PIPELINE" && lookup(each.value, "runtime", null) == "APPSYNC_JS" ? [true] : [])
186+
187+
content {
188+
name = "APPSYNC_JS"
189+
runtime_version = lookup(each.value, "runtime_version", "1.0.0")
190+
}
191+
}
192+
193+
# code is required when runtime is APPSYNC_JS
194+
code = lookup(each.value, "kind", null) == "PIPELINE" && lookup(each.value, "runtime", null) == "APPSYNC_JS" ? lookup(each.value, "code") : null
195+
196+
request_template = lookup(each.value, "request_template", tobool(lookup(each.value, "direct_lambda", false)) ? var.direct_lambda_request_template : lookup(each.value, "kind", null) == "PIPELINE" && lookup(each.value, "runtime", null) == "APPSYNC_JS" ? null : "{}")
197+
response_template = lookup(each.value, "response_template", tobool(lookup(each.value, "direct_lambda", false)) ? var.direct_lambda_response_template : lookup(each.value, "kind", null) == "PIPELINE" && lookup(each.value, "runtime", null) == "APPSYNC_JS" ? null : "{}")
186198

187199
data_source = lookup(each.value, "data_source", null) != null ? aws_appsync_datasource.this[each.value.data_source].name : lookup(each.value, "data_source_arn", null)
188200

0 commit comments

Comments
 (0)