public function toDynamoDbQuery(
        $columns = [],
        $limit = DynamoDbQueryBuilder::MAX_LIMIT
    ) {
        $this->applyScopes();

        $this->resetExpressions();

        $op = 'Scan';
        $queryBuilder = DynamoDb::table($this->model->getTable());

        if (! empty($this->wheres)) {
            $analyzer = $this->getConditionAnalyzer();

            if ($keyConditions = $analyzer->keyConditions()) {
                $op = 'Query';
                $queryBuilder->setKeyConditionExpression($this->keyConditionExpression->parse($keyConditions));
            }

            if ($filterConditions = $analyzer->filterConditions()) {
                $queryBuilder->setFilterExpression($this->filterExpression->parse($filterConditions));
            }

            if ($index = $analyzer->index()) {
                $queryBuilder->setIndexName($index->name);
            }
        }

        if ($this->index) {
            // If user specifies the index manually, respect that
            $queryBuilder->setIndexName($this->index);
        }

        if ($limit !== static::MAX_LIMIT) {
            $queryBuilder->setLimit($limit);
        }

        if (!empty($columns)) {
            // Either we try to get the count or specific columns
            if ($columns == ['count(*)']) {
                $queryBuilder->setSelect('COUNT');
            } else {
                $queryBuilder->setProjectionExpression($this->projectionExpression->parse($columns));
            }
        }

        if (!empty($this->lastEvaluatedKey)) {
            $queryBuilder->setExclusiveStartKey($this->lastEvaluatedKey);
        }

        $queryBuilder
            ->setExpressionAttributeNames($this->expressionAttributeNames->all())
            ->setExpressionAttributeValues($this->expressionAttributeValues->all());

        $raw = new RawDynamoDbQuery($op, $queryBuilder->prepare($this->client)->query);

        if ($this->decorator) {
            call_user_func($this->decorator, $raw);
        }

        return $raw;
    }
public function toDynamoDbQuery(
        $columns = [],
        $limit = DynamoDbQueryBuilder::MAX_LIMIT
    ) {
        $this->applyScopes();

        $this->resetExpressions();

        $op = 'Scan';
        $queryBuilder = DynamoDb::table($this->model->getTable());

        if (! empty($this->wheres)) {
            $analyzer = $this->getConditionAnalyzer();

            if ($keyConditions = $analyzer->keyConditions()) {
                $op = 'Query';
                $queryBuilder->setKeyConditionExpression($this->keyConditionExpression->parse($keyConditions));
            }

            if ($filterConditions = $analyzer->filterConditions()) {
                $queryBuilder->setFilterExpression($this->filterExpression->parse($filterConditions));
            }

            if ($index = $analyzer->index()) {
                $queryBuilder->setIndexName($index->name);
            }
        }

        if ($this->index) {
            // If user specifies the index manually, respect that
            $queryBuilder->setIndexName($this->index);
        }

        if ($limit !== static::MAX_LIMIT) {
            $queryBuilder->setLimit($limit);
        }

        if (!empty($columns)) {
            // Either we try to get the count or specific columns
            if ($columns == ['count(*)']) {
                $queryBuilder->setSelect('COUNT');
            } else {
                $queryBuilder->setProjectionExpression($this->projectionExpression->parse($columns));
            }
        }

        if (!empty($this->lastEvaluatedKey)) {
            $queryBuilder->setExclusiveStartKey($this->lastEvaluatedKey);
        }

        $queryBuilder
            ->setExpressionAttributeNames($this->expressionAttributeNames->all())
            ->setExpressionAttributeValues($this->expressionAttributeValues->all());

        $raw = new RawDynamoDbQuery($op, $queryBuilder->prepare($this->client)->query);

        if ($this->decorator) {
            call_user_func($this->decorator, $raw);
        }

        return $raw;
    }
public function toDynamoDbQuery ( $ columns = [ ] , $ limit = DynamoDbQueryBuilder :: MAX_LIMIT ) { $ this -> applyScopes ( ) ; $ this -> resetExpressions ( ) ; $ op = 'Scan' ; $ queryBuilder = DynamoDb :: table ( $ this -> model -> getTable ( ) ) ; if ( ! empty ( $ this -> wheres ) ) { $ analyzer = $ this -> getConditionAnalyzer ( ) ; if ( $ keyConditions = $ analyzer -> keyConditions ( ) ) { $ op = 'Query' ; $ queryBuilder -> setKeyConditionExpression ( $ this -> keyConditionExpression -> parse ( $ keyConditions ) ) ; } if ( $ filterConditions = $ analyzer -> filterConditions ( ) ) { $ queryBuilder -> setFilterExpression ( $ this -> filterExpression -> parse ( $ filterConditions ) ) ; } if ( $ index = $ analyzer -> index ( ) ) { $ queryBuilder -> setIndexName ( $ index -> name ) ; } } if ( $ this -> index ) { // If user specifies the index manually, respect that $ queryBuilder -> setIndexName ( $ this -> index ) ; } if ( $ limit !== static :: MAX_LIMIT ) { $ queryBuilder -> setLimit ( $ limit ) ; } if ( ! empty ( $ columns ) ) { // Either we try to get the count or specific columns if ( $ columns == [ 'count(*)' ] ) { $ queryBuilder -> setSelect ( 'COUNT' ) ; } else { $ queryBuilder -> setProjectionExpression ( $ this -> projectionExpression -> parse ( $ columns ) ) ; } } if ( ! empty ( $ this -> lastEvaluatedKey ) ) { $ queryBuilder -> setExclusiveStartKey ( $ this -> lastEvaluatedKey ) ; } $ queryBuilder -> setExpressionAttributeNames ( $ this -> expressionAttributeNames -> all ( ) ) -> setExpressionAttributeValues ( $ this -> expressionAttributeValues -> all ( ) ) ; $ raw = new RawDynamoDbQuery ( $ op , $ queryBuilder -> prepare ( $ this -> client ) -> query ) ; if ( $ this -> decorator ) { call_user_func ( $ this -> decorator , $ raw ) ; } return $ raw ; }
Return the raw DynamoDb query

@param array $columns
@param int $limit
@return RawDynamoDbQuery
Return the raw DynamoDb query