## [Start] Set query expression for key ** #set( $modelQueryExpression = {} ) ## [Start] Validate key arguments. ** #if( !$util.isNull($ctx.args.createdAt) && $util.isNull($ctx.args.categoryId) ) $util.error("When providing argument 'createdAt' you must also provide arguments categoryId", "InvalidArgumentsError") #end ## [End] Validate key arguments. ** #if( !$util.isNull($ctx.args.categoryId) ) #set( $modelQueryExpression.expression = "#categoryId = :categoryId" ) #set( $modelQueryExpression.expressionNames = { "#categoryId": "categoryId" } ) #set( $modelQueryExpression.expressionValues = { ":categoryId": { "S": "$ctx.args.categoryId" } } ) #end ## [Start] Applying Key Condition ** #if( !$util.isNull($ctx.args.createdAt) && !$util.isNull($ctx.args.createdAt.beginsWith) ) #set( $modelQueryExpression.expression = "$modelQueryExpression.expression AND begins_with(#sortKey, :sortKey)" ) $util.qr($modelQueryExpression.expressionNames.put("#sortKey", "createdAt")) $util.qr($modelQueryExpression.expressionValues.put(":sortKey", { "S": "$ctx.args.createdAt.beginsWith" })) #end #if( !$util.isNull($ctx.args.createdAt) && !$util.isNull($ctx.args.createdAt.between) ) #set( $modelQueryExpression.expression = "$modelQueryExpression.expression AND #sortKey BETWEEN :sortKey0 AND :sortKey1" ) $util.qr($modelQueryExpression.expressionNames.put("#sortKey", "createdAt")) $util.qr($modelQueryExpression.expressionValues.put(":sortKey0", { "S": "$ctx.args.createdAt.between[0]" })) $util.qr($modelQueryExpression.expressionValues.put(":sortKey1", { "S": "$ctx.args.createdAt.between[1]" })) #end #if( !$util.isNull($ctx.args.createdAt) && !$util.isNull($ctx.args.createdAt.eq) ) #set( $modelQueryExpression.expression = "$modelQueryExpression.expression AND #sortKey = :sortKey" ) $util.qr($modelQueryExpression.expressionNames.put("#sortKey", "createdAt")) $util.qr($modelQueryExpression.expressionValues.put(":sortKey", { "S": "$ctx.args.createdAt.eq" })) #end #if( !$util.isNull($ctx.args.createdAt) && !$util.isNull($ctx.args.createdAt.lt) ) #set( $modelQueryExpression.expression = "$modelQueryExpression.expression AND #sortKey < :sortKey" ) $util.qr($modelQueryExpression.expressionNames.put("#sortKey", "createdAt")) $util.qr($modelQueryExpression.expressionValues.put(":sortKey", { "S": "$ctx.args.createdAt.lt" })) #end #if( !$util.isNull($ctx.args.createdAt) && !$util.isNull($ctx.args.createdAt.le) ) #set( $modelQueryExpression.expression = "$modelQueryExpression.expression AND #sortKey <= :sortKey" ) $util.qr($modelQueryExpression.expressionNames.put("#sortKey", "createdAt")) $util.qr($modelQueryExpression.expressionValues.put(":sortKey", { "S": "$ctx.args.createdAt.le" })) #end #if( !$util.isNull($ctx.args.createdAt) && !$util.isNull($ctx.args.createdAt.gt) ) #set( $modelQueryExpression.expression = "$modelQueryExpression.expression AND #sortKey > :sortKey" ) $util.qr($modelQueryExpression.expressionNames.put("#sortKey", "createdAt")) $util.qr($modelQueryExpression.expressionValues.put(":sortKey", { "S": "$ctx.args.createdAt.gt" })) #end #if( !$util.isNull($ctx.args.createdAt) && !$util.isNull($ctx.args.createdAt.ge) ) #set( $modelQueryExpression.expression = "$modelQueryExpression.expression AND #sortKey >= :sortKey" ) $util.qr($modelQueryExpression.expressionNames.put("#sortKey", "createdAt")) $util.qr($modelQueryExpression.expressionValues.put(":sortKey", { "S": "$ctx.args.createdAt.ge" })) #end ## [End] Applying Key Condition ** ## [End] Set query expression for key ** #set( $limit = $util.defaultIfNull($context.args.limit, 100) ) #set( $QueryRequest = { "version": "2018-05-29", "operation": "Query", "limit": $limit, "query": $modelQueryExpression, "index": "videoByCategory" } ) #if( !$util.isNull($ctx.args.sortDirection) && $ctx.args.sortDirection == "DESC" ) #set( $QueryRequest.scanIndexForward = false ) #else #set( $QueryRequest.scanIndexForward = true ) #end #if( $context.args.nextToken ) #set( $QueryRequest.nextToken = $context.args.nextToken ) #end #if( !$util.isNullOrEmpty($ctx.stash.authFilter) ) #set( $filter = $ctx.stash.authFilter ) #if( !$util.isNullOrEmpty($ctx.args.filter) ) #set( $filter = { "and": [$filter, $ctx.args.filter] } ) #end #else #if( !$util.isNullOrEmpty($ctx.args.filter) ) #set( $filter = $ctx.args.filter ) #end #end #if( !$util.isNullOrEmpty($filter) ) #set( $filterExpression = $util.parseJson($util.transform.toDynamoDBFilterExpression($filter)) ) #if( $util.isNullOrEmpty($filterExpression) ) $util.error("Unable to process the filter expression", "Unrecognized Filter") #end #if( !$util.isNullOrBlank($filterExpression.expression) ) #if( $filterExpression.expressionValues.size() == 0 ) $util.qr($filterExpression.remove("expressionValues")) #end #set( $QueryRequest.filter = $filterExpression ) #end #end $util.toJson($QueryRequest)