Quick AWS AppSync

Posted on October 2, 2021
Tags: aws

1 Summary

2 Schema

type Picture {
	id: ID!
	owner: ID!
	src: String
}

type Query {
	myCustomQuery(id: ID!): [Picture]
		@aws_auth(cognito_groups: ["Admins","Viewers"])
}

schema {
	query: Query
}

3 Attach dynamoDB

input CreatePictureInput {
	owner: ID!
	src: String
}

input DeletePictureInput {
	id: ID!
}

type Mutation {
	createPicture(input: CreatePictureInput!): Picture
	updatePicture(input: UpdatePictureInput!): Picture
	deletePicture(input: DeletePictureInput!): Picture
}

type Picture {
	id: ID!
	owner: ID!
	src: String
}

type PictureConnection {
	items: [Picture]
	nextToken: String
}

type Query {
	myCustomQuery(id: ID!): [Picture]
		@aws_auth(cognito_groups: ["Admins","Viewers"])
	getPicture(id: ID!): Picture
	listPictures(filter: TablePictureFilterInput, limit: Int, nextToken: String): PictureConnection
}

type Subscription {
	onCreatePicture(id: ID, owner: ID, src: String): Picture
		@aws_subscribe(mutations: ["createPicture"])
	onUpdatePicture(id: ID, owner: ID, src: String): Picture
		@aws_subscribe(mutations: ["updatePicture"])
	onDeletePicture(id: ID, owner: ID, src: String): Picture
		@aws_subscribe(mutations: ["deletePicture"])
}

input TableBooleanFilterInput {
	ne: Boolean
	eq: Boolean
}

input TableFloatFilterInput {
	ne: Float
	eq: Float
	le: Float
	lt: Float
	ge: Float
	gt: Float
	contains: Float
	notContains: Float
	between: [Float]
}

input TableIDFilterInput {
	ne: ID
	eq: ID
	le: ID
	lt: ID
	ge: ID
	gt: ID
	contains: ID
	notContains: ID
	between: [ID]
	beginsWith: ID
}

input TableIntFilterInput {
	ne: Int
	eq: Int
	le: Int
	lt: Int
	ge: Int
	gt: Int
	contains: Int
	notContains: Int
	between: [Int]
}

input TablePictureFilterInput {
	id: TableIDFilterInput
	owner: TableIDFilterInput
	src: TableStringFilterInput
}

input TableStringFilterInput {
	ne: String
	eq: String
	le: String
	lt: String
	ge: String
	gt: String
	contains: String
	notContains: String
	between: [String]
	beginsWith: String
}

input UpdatePictureInput {
	id: ID!
	owner: ID
	src: String
}

schema {
	query: Query
	mutation: Mutation
	subscription: Subscription
}

4 AppSync Query builder UI

NOTICE: Even though owner*: hi is used for Input, the Query result does not show any owner results. That is because we did not include owner in the output boxed in orange.