В настоящее время мой резольвер работает как лямбда-функция:
import boto3
from boto3.dynamodb.conditions import Key
def lambda_handler(event, context):
list = []
for device in event['source']['devices'] :
dynamodb = boto3.resource('dynamodb')
readings = dynamodb.Table('readings')
response = readings.query(
KeyConditionExpression=Key('device').eq(device['device'])
)
items = response['Items']
list.extend(items)
return list
Я хотел бы иметь возможность использовать его в качестве распознавателя VTL на DynamodB. Моя проблема в том, что в моей таблице есть ключ сортировки
Это означает, что я не могу использовать пакетный преобразователь для запросов по паре идентификаторов, потому что мне также нужно будет предоставить ключ сортировки, и я просто хочу получить все результаты по первичному ключу раздела.
Как вы выполняете запросы с помощью множества идентификаторов, используя VTL, в основном реплицируя мою лямбда-функцию в VTL. Это вообще возможно?
Схема добавлена, пожалуйста, извините за беспорядок, это работа в процессе и я пытаюсь много вещей. Все еще очень плохо знаком с graphQL
type Device {
id: String
device: String!
}
input DeviceInput {
id: String
device: String!
}
type DeviceReadings {
devices: [Device]
}
type Mutation {
createDevice(input: DeviceInput): Device
}
type PaginatedDevices {
devices: [Device]
readings: [Reading]
cows: [cow]
nextToken: String
}
type Query {
getAllUserDevices(nextToken: String, count: Int): PaginatedDevices
getAllDeviceReadings: DeviceReadings
getAllUserReadings: DeviceReadings
getAllReadings(deviceId: String!): Readings
getCowReadings(cowId: String!): UserCowReadings
}
type Reading {
device: String
time: Int
cow: Int
battery: String
}
type Readings {
items: [Reading]
}
type UserCowReadings {
devices: [Device]
readings: [Reading]
}
type cow {
id: Int
device: String
nait: String
}
schema {
query: Query
mutation: Mutation
}