Created
November 12, 2023 11:09
-
-
Save sebastianrothbucher/8a59febc5f864f64de5d046246b58c81 to your computer and use it in GitHub Desktop.
Appsync dynamodb JS
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
type ItemsResponse { | |
listid: ID! | |
items: [ListItem] | |
} | |
type ListItem { | |
listid: ID! | |
ts_uuid: ID! | |
title: String! | |
done: Boolean! | |
} | |
type Mutation { | |
putItem(listid: ID!, title: String!): ListItem | |
} | |
type Query { | |
items(listid: ID!): ItemsResponse | |
} | |
schema { | |
query: Query | |
mutation: Mutation | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { util } from "@aws-appsync/utils"; | |
/** | |
* Queries a DynamoDB table for items based on the `id` and that contain the `tag` | |
* @param {import('@aws-appsync/utils').Context<{listid: string}>} ctx the context | |
* @returns {import('@aws-appsync/utils').DynamoDBQueryRequest} the request | |
*/ | |
export function request(ctx) { | |
const query = JSON.parse( | |
util.transform.toDynamoDBConditionExpression({ | |
listid: { eq: ctx.args.listid }, | |
}), | |
); | |
return { operation: "Query", query }; | |
} | |
/** | |
* Returns the query items | |
* @param {import('@aws-appsync/utils').Context} ctx the context | |
* @returns {{listid, items: {listid, ts_uuid, title, done}}} a flat list of result items | |
*/ | |
export function response(ctx) { | |
if (ctx.error) { | |
util.error(ctx.error.message, ctx.error.type); | |
} | |
return { | |
listid: ctx.args.listid, | |
items: ctx.result.items.map(item => ({ | |
listid: item['listid'], | |
ts_uuid: item['ts-uuid'], | |
title: item['title'], | |
done: item['done'], | |
})) | |
}; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { util } from "@aws-appsync/utils"; | |
/** | |
* Puts an item into the DynamoDB table using an auto-generated ID. | |
* @param {import('@aws-appsync/utils').Context<{listid, title}>} ctx the context | |
* @returns {import('@aws-appsync/utils').DynamoDBPutItemRequest} the request | |
*/ | |
export function request(ctx) { | |
return { | |
operation: "PutItem", | |
key: util.dynamodb.toMapValues({ listid: ctx.args.listid, 'ts-uuid': '' + util.time.nowEpochMilliSeconds() + '-' + util.autoId() }), // have a predictable yet unique range key | |
attributeValues: util.dynamodb.toMapValues({ | |
title: ctx.args.title, | |
done: false, | |
}), | |
}; | |
} | |
/** | |
* Returns the item or throws an error if the operation failed | |
* @param {import('@aws-appsync/utils').Context} ctx the context | |
* @returns {{listid, ts_uuid, title, done}} the inserted item | |
*/ | |
export function response(ctx) { | |
if (ctx.error) { | |
util.error(ctx.error.message, ctx.error.type); | |
} | |
return { | |
listid: ctx.result['listid'], | |
ts_uuid: ctx.result['ts-uuid'], | |
title: ctx.result['title'], | |
done: ctx.result['done'], | |
}; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
query { | |
items(listid:"abc-123") { | |
listid, | |
items { | |
ts_uuid, | |
title, | |
done | |
} | |
} | |
} | |
mutation { | |
putItem(listid:"abc-123", title:"Create a gist") { | |
listid, | |
ts_uuid, | |
title, | |
done | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
listid | ts-uuid | done | title | |
---|---|---|---|---|
abc-123 | 1699783397000-def-456 | false | Hack some AppSync | |
abc-123 | 1699784061000-geh-789 | true | Create a template lib |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment