Class DynamoDbQuery

java.lang.Object
io.inversion.rql.Builder<T,T>
io.inversion.rql.Query<DynamoDbQuery,DynamoDb,io.inversion.rql.Select<io.inversion.rql.Select<io.inversion.rql.Select,DynamoDbQuery>,DynamoDbQuery>,io.inversion.rql.From<io.inversion.rql.From<io.inversion.rql.From,DynamoDbQuery>,DynamoDbQuery>,io.inversion.rql.Where<io.inversion.rql.Where<io.inversion.rql.Where,DynamoDbQuery>,DynamoDbQuery>,io.inversion.rql.Group<io.inversion.rql.Group<io.inversion.rql.Group,DynamoDbQuery>,DynamoDbQuery>,io.inversion.rql.Order<io.inversion.rql.Order<io.inversion.rql.Order,DynamoDbQuery>,DynamoDbQuery>,io.inversion.rql.Page<io.inversion.rql.Page<io.inversion.rql.Page,DynamoDbQuery>,DynamoDbQuery>>
io.inversion.dynamodb.DynamoDbQuery

public class DynamoDbQuery extends io.inversion.rql.Query<DynamoDbQuery,DynamoDb,io.inversion.rql.Select<io.inversion.rql.Select<io.inversion.rql.Select,DynamoDbQuery>,DynamoDbQuery>,io.inversion.rql.From<io.inversion.rql.From<io.inversion.rql.From,DynamoDbQuery>,DynamoDbQuery>,io.inversion.rql.Where<io.inversion.rql.Where<io.inversion.rql.Where,DynamoDbQuery>,DynamoDbQuery>,io.inversion.rql.Group<io.inversion.rql.Group<io.inversion.rql.Group,DynamoDbQuery>,DynamoDbQuery>,io.inversion.rql.Order<io.inversion.rql.Order<io.inversion.rql.Order,DynamoDbQuery>,DynamoDbQuery>,io.inversion.rql.Page<io.inversion.rql.Page<io.inversion.rql.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 final Map<String,String>
     
    static final Map<String,String>
     

    Fields inherited from class io.inversion.rql.Query

    collection, db, dryRun, from, group, order, page, select, values, where

    Fields inherited from class io.inversion.rql.Builder

    builders, functions, parent, terms
  • Constructor Summary

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

    Modifier and Type
    Method
    Description
    protected boolean
    addTerm(String token, io.inversion.rql.Term term)
     
    protected List<io.inversion.rql.Term>
    after(io.inversion.Index index, Map<String,com.amazonaws.services.dynamodbv2.model.AttributeValue> attrs)
     
    protected io.inversion.Index
     
    protected io.inversion.rql.Where
     
    io.inversion.Results
     
    protected io.inversion.Results
     
    com.amazonaws.services.dynamodbv2.document.Table
     
    io.inversion.rql.Term
    Finds the primary or a secondary index to use based on what parameters were passed in.
     
    io.inversion.rql.Term
     
    protected Object
    getValue(com.amazonaws.services.dynamodbv2.model.AttributeValue v)
     
    withDynamoTable(com.amazonaws.services.dynamodbv2.document.Table dynamoTable)
     

    Methods inherited from class io.inversion.rql.Query

    clearValues, createFrom, createGroup, createOrder, createPage, createSelect, getBuilders, getCollection, getColValue, getColValueKeys, getColValues, getDb, getFrom, getGroup, getNumValues, getOrder, getPage, getSelect, getValues, getWhere, isDryRun, withCollection, withColValue, withDb, withDryRun, withTerm

    Methods inherited from class io.inversion.rql.Builder

    clearFunctions, find, find, 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 Details

  • Constructor Details

    • DynamoDbQuery

      public DynamoDbQuery()
    • DynamoDbQuery

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

    • createWhere

      protected io.inversion.rql.Where createWhere()
      Overrides:
      createWhere in class io.inversion.rql.Query<DynamoDbQuery,DynamoDb,io.inversion.rql.Select<io.inversion.rql.Select<io.inversion.rql.Select,DynamoDbQuery>,DynamoDbQuery>,io.inversion.rql.From<io.inversion.rql.From<io.inversion.rql.From,DynamoDbQuery>,DynamoDbQuery>,io.inversion.rql.Where<io.inversion.rql.Where<io.inversion.rql.Where,DynamoDbQuery>,DynamoDbQuery>,io.inversion.rql.Group<io.inversion.rql.Group<io.inversion.rql.Group,DynamoDbQuery>,DynamoDbQuery>,io.inversion.rql.Order<io.inversion.rql.Order<io.inversion.rql.Order,DynamoDbQuery>,DynamoDbQuery>,io.inversion.rql.Page<io.inversion.rql.Page<io.inversion.rql.Page,DynamoDbQuery>,DynamoDbQuery>>
    • addTerm

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

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

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

      public io.inversion.Results doSelect() throws io.inversion.ApiException
      Overrides:
      doSelect in class io.inversion.rql.Query<DynamoDbQuery,DynamoDb,io.inversion.rql.Select<io.inversion.rql.Select<io.inversion.rql.Select,DynamoDbQuery>,DynamoDbQuery>,io.inversion.rql.From<io.inversion.rql.From<io.inversion.rql.From,DynamoDbQuery>,DynamoDbQuery>,io.inversion.rql.Where<io.inversion.rql.Where<io.inversion.rql.Where,DynamoDbQuery>,DynamoDbQuery>,io.inversion.rql.Group<io.inversion.rql.Group<io.inversion.rql.Group,DynamoDbQuery>,DynamoDbQuery>,io.inversion.rql.Order<io.inversion.rql.Order<io.inversion.rql.Order,DynamoDbQuery>,DynamoDbQuery>,io.inversion.rql.Page<io.inversion.rql.Page<io.inversion.rql.Page,DynamoDbQuery>,DynamoDbQuery>>
      Throws:
      io.inversion.ApiException
    • doSelect0

      protected io.inversion.Results doSelect0() throws Exception
      Throws:
      Exception
    • after

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

      protected 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:
    • getSortKey

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

      public Object getSelectSpec()