Represents a function that tries to convert an AttributeValue into a Scala value (typically that represents a field in an object).
A specific field/column in a table.
A specific field/column in a table. Has a name and an Encoder/Decoder to prepare the encoded representation to the Dynamo driver, and to return the de-serialized value back from the database, respectively.
Queries is defined in terms of Hash and Range types.
Queries is defined in terms of Hash and Range types.
The Hash type identifies records and the Range allows us to do ordering.
A key-value table.
A key-value table.
Implementations have concrete key and value types, as well as queryable hash and range types.
Table returns DBActions that are pure values (DBOps that line inside Free) and can be chained together with map/flatMap (ie. there is a monad for DBAction.
You can get an interpreter for DBActions (to any arbitrary C[_]) by supplying a DBOp ~> C natural transformation.
Contains implicit decoders for different types and useful functions for creating your own Decoders.
Contains functions that perform operations on a DynamoDB table.
Contains functions that perform operations on a DynamoDB table. Functions return a DynamoDBAction that can be run by providing an instance of an AmazonDynamoDBClient (see AmazonClient for convenient constructor functions).
This class is generally not intended to be used directly, but used through the Table algebra with column definitions.
Tables are represented as key-value mappings, so you need classes to represent the key and the value. In addition, you need to create instances of: * TODO describe new Column based definition * Table - specify the key, value, hash key and range key types, and a TableDefinition (which includes a name, the key types, and a couple of other DynamoDB parameters). * Columns - Columns map your Scala types into columns in DynamoDB i.e. start with a Column with a name for each column in DynamoDB, and then create composite columns using Column.composeX to be able to map your high-level Scala classes. * Encoders/Decoders - Under the covers, we use Encoders/Decoders to convert 'primitive' or low-level Scala types into suitable values for DynamoDB (ints, strings, dates). In most cases you don't need to be concerned with Encoders/Decoders (they will be picked up automatically in your Column definition). However, you you can extend the standard set if you need to.