Class DynamoDbQuery


  • public class DynamoDbQuery
    extends io.inversion.query.Query<DynamoDbQuery,​DynamoDb,​io.inversion.query.Select<io.inversion.query.Select<io.inversion.query.Select,​DynamoDbQuery>,​DynamoDbQuery>,​io.inversion.query.From<io.inversion.query.From<io.inversion.query.From,​DynamoDbQuery>,​DynamoDbQuery>,​io.inversion.query.Where<io.inversion.query.Where<io.inversion.query.Where,​DynamoDbQuery>,​DynamoDbQuery>,​io.inversion.query.Group<io.inversion.query.Group<io.inversion.query.Group,​DynamoDbQuery>,​DynamoDbQuery>,​io.inversion.query.Order<io.inversion.query.Order<io.inversion.query.Order,​DynamoDbQuery>,​DynamoDbQuery>,​io.inversion.query.Page<io.inversion.query.Page<io.inversion.query.Page,​DynamoDbQuery>,​DynamoDbQuery>>
    IMPLEMENTATION NOTE: Helpful DynamoDb Links
    • https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html
    • https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html
    • https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/index.html
    • https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html
    • https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryingJavaDocumentAPI.html
    • https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Query.html#FilteringResults
    • https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ExpressionAttributeNames.html
    • https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.KeyConditions.html
    • https://stackoverflow.com/questions/34349135/how-do-you-query-for-a-non-existent-null-attribute-in-dynamodb
    • https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.QueryFilter.html
    TODO: are all of these covered? EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.util.Map<java.lang.String,​java.lang.String> FUNCTION_MAP  
      static java.util.Map<java.lang.String,​java.lang.String> OPERATOR_MAP  
      • Fields inherited from class io.inversion.query.Query

        castValues, collection, db, dryRun, from, group, order, originalValues, page, select, where
      • Fields inherited from class io.inversion.query.Builder

        builders, functions, parent, terms
    • Constructor Summary

      Constructors 
      Constructor Description
      DynamoDbQuery()  
      DynamoDbQuery​(DynamoDb db, io.inversion.Collection table, java.util.List<io.inversion.rql.Term> terms)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected boolean addTerm​(java.lang.String token, io.inversion.rql.Term term)  
      protected java.util.List<io.inversion.rql.Term> after​(io.inversion.Index index, java.util.Map<java.lang.String,​com.amazonaws.services.dynamodbv2.model.AttributeValue> attrs)  
      protected io.inversion.Index calcIndex()  
      protected io.inversion.query.Where createWhere()  
      io.inversion.Results doSelect()  
      protected io.inversion.Results doSelect0()  
      protected io.inversion.Results doSelect1()  
      com.amazonaws.services.dynamodbv2.document.Table getDynamoTable()  
      io.inversion.rql.Term getPartKey()
      Finds the primary or a secondary index to use based on what parameters were passed in.
      java.lang.Object getSelectSpec()  
      io.inversion.rql.Term getSortKey()  
      protected java.lang.Object getValue​(com.amazonaws.services.dynamodbv2.model.AttributeValue v)  
      DynamoDbQuery withDynamoTable​(com.amazonaws.services.dynamodbv2.document.Table dynamoTable)  
      • Methods inherited from class io.inversion.query.Query

        clearValues, createFrom, createGroup, createOrder, createPage, createSelect, getBuilders, getCollection, getColValue, getColValueKeys, getColValues, getDb, getFrom, getGroup, getNumValues, getOrder, getOriginalValues, getPage, getSelect, getValues, getWhere, isDryRun, withCollection, withColValue, withDb, withDryRun, withTerm
      • Methods inherited from class io.inversion.query.Builder

        clearFunctions, find, find, findAll, findAll, findInt, findTerm, getParent, getRoot, getTerms, isFunction, parse, r, removeBuilder, toString, toString, withBuilder, withFunctions, withFunctions, withParent, withTerm, withTerm, withTerms
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • OPERATOR_MAP

        public static final java.util.Map<java.lang.String,​java.lang.String> OPERATOR_MAP
      • FUNCTION_MAP

        public static final java.util.Map<java.lang.String,​java.lang.String> FUNCTION_MAP
    • Constructor Detail

      • DynamoDbQuery

        public DynamoDbQuery()
      • DynamoDbQuery

        public DynamoDbQuery​(DynamoDb db,
                             io.inversion.Collection table,
                             java.util.List<io.inversion.rql.Term> terms)
    • Method Detail

      • addTerm

        protected boolean addTerm​(java.lang.String token,
                                  io.inversion.rql.Term term)
        Overrides:
        addTerm in class io.inversion.query.Builder<DynamoDbQuery,​DynamoDbQuery>
      • getDynamoTable

        public com.amazonaws.services.dynamodbv2.document.Table getDynamoTable()
      • withDynamoTable

        public DynamoDbQuery withDynamoTable​(com.amazonaws.services.dynamodbv2.document.Table dynamoTable)
      • doSelect0

        protected io.inversion.Results doSelect0()
                                          throws java.lang.Exception
        Throws:
        java.lang.Exception
      • doSelect1

        protected io.inversion.Results doSelect1()
                                          throws java.lang.Exception
        Throws:
        java.lang.Exception
      • after

        protected java.util.List<io.inversion.rql.Term> after​(io.inversion.Index index,
                                                              java.util.Map<java.lang.String,​com.amazonaws.services.dynamodbv2.model.AttributeValue> attrs)
      • getValue

        protected java.lang.Object getValue​(com.amazonaws.services.dynamodbv2.model.AttributeValue v)
      • calcIndex

        protected io.inversion.Index calcIndex()
        Returns:
        the best fit index to use for the query based on the params supplied
      • getPartKey

        public io.inversion.rql.Term getPartKey()
        Finds the primary or a secondary index to use based on what parameters were passed in.
        Returns:
        a term referencing the partition key column
        See Also:
        calcIndex()
      • getSortKey

        public io.inversion.rql.Term getSortKey()
      • getSelectSpec

        public java.lang.Object getSelectSpec()