meteor
package meteor
- Alphabetic
- Public
- Protected
Type Members
- trait Client[F[_]] extends AnyRef
Low level client that can perform AWS DynamoDB table and item actions.
Low level client that can perform AWS DynamoDB table and item actions. It provides methods that resemble DynamoDB's API, consider using high level API tables from meteor.api.hi package instead. This is still useful to: create, delete and scan table.
- trait DynamoDbType extends AnyRef
Represent DynamoDB primitive data types, including BOOL, B, BS, L, M, N, NS, NULL, S and SS.
- case class Expression(expression: String, attributeNames: Map[String, String], attributeValues: Map[String, AttributeValue]) extends Product with Serializable
Abstraction over DynamoDB expressions, this can be key condition expression, update expression, projection expression etc..
Abstraction over DynamoDB expressions, this can be key condition expression, update expression, projection expression etc.. https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.html.
It is recommended to avoid DynamoDB's reserved words in expression string by providing expression as raw String with attribute names and values as placeholders only. Attribute names and values can then be replaced separately via
attributeNames
andattributeValues
maps.Example:
import meteor.Expression import meteor.syntax._ Expression( "#b = :my_bool and #i > :my_int", Map("#b" -> "my_bool_attribute_name", "#i" -> "my_int_attribute_name"), Map( ":my_bool" -> true.asAttributeValue, ":my_int" -> 0.asAttributeValue ) )
- expression
expression as raw String
- attributeNames
a map of attribute name placeholders in the raw String above to the actual attribute names in the table
- attributeValues
a map of attribute value placeholders in the raw String above to the actual attribute values
- case class KeyDef[K](attributeName: String, attributeType: DynamoDbType) extends Product with Serializable
Key's definition, a representation of DynamoDB's key.
Key's definition, a representation of DynamoDB's key.
- K
key's type
- attributeName
attribute's name
- attributeType
attribute's type
- case class Query[P, S](partitionKey: P, sortKeyQuery: SortKeyQuery[S], filter: Expression)(implicit evidence$7: Encoder[P], evidence$8: Encoder[S]) extends Product with Serializable
Represent a DynamoDB's query where a partition key value is required,
sortKeyQuery
andfilter
are optional.Represent a DynamoDB's query where a partition key value is required,
sortKeyQuery
andfilter
are optional.Examples:
// query for an item where partition key == "some-partition-key", sort key == "some-sort-key" but only // return a value if the filter's condition is med ("my_bool_attribute_name" == true) val query: Query[String, String] = Query( "some-partition-key", SortKeyQuery.EqualTo("some-sort-key"), Expression( "#b = :my_bool", Map("#b" -> "my_bool_attribute_name"), Map( ":my_bool" -> true.asAttributeValue ) ) ) // query for an item where partition key == "some-partition-key", the table doesn't have sort key, only // return a value if the filter's condition is med ("my_bool_attribute_name" == true) val query: Query[String, Nothing] = Query( "some-partition-key", Expression( "#b = :my_bool", Map("#b" -> "my_bool_attribute_name"), Map( ":my_bool" -> true.asAttributeValue ) ) )
- P
parition key's type
- S
sort key's type (
Nothing
type for table without sort key)- partitionKey
partition key value
- sortKeyQuery
sort key query
- filter
filter expression
- sealed trait SortKeyQuery[T] extends AnyRef
Represent sort key query which can be used as part of key condition expression for query action: https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html#DDB-Query-request-KeyConditionExpression
- trait syntax extends AnyRef
Utility to help writing meteor.codec.Codec, meteor.codec.Encoder and meteor.codec.Decoder.
Utility to help writing meteor.codec.Codec, meteor.codec.Encoder and meteor.codec.Decoder.
Examples:
import meteor.syntax._ import meteor.codec._ case class Author( names: String, age: Int ) case class Book( name: String, author: Author, coAuthor: Option[Author] ) implicit val encoderForAuthor: Encoder[Author] = Encoder.instance { obj => Map( "names" -> obj.names.asAttributeValue, "age" -> obj.age.asAttributeValue ).asAttributeValue } implicit val encoderForBook: Encoder[Book] = Encoder.instance { obj => Map( "name" -> obj.names.asAttributeValue, "author" -> obj.age.asAttributeValue, "coAuthor" -> obj.age.asAttributeValue, ).asAttributeValue } implicit val decoderForAuthor: Decoder[Author] = Decoder.instance { av => for { names <- av.getAs[String]("names") age <- av.getAs[Int]("age") } yield Author(names, age) } implicit val decoderForBook: Decoder[Book] = Decoder.instance { av => for { name <- av.getAs[String]("name") author <- av.getAs[Author]("author") coAuthor <- av.getOpt[Author]("coAuthor") } yield Book(name, author, coAuthor) }
Deprecated Type Members
- case class CompositeKeysSecondaryIndex[P, S](tableName: String, indexName: String, partitionKeyDef: KeyDef[P], sortKeyDef: KeyDef[S]) extends CompositeKeysIndex[P, S] with Product with Serializable
Represent a secondary index which has both partition key and sort key
Represent a secondary index which has both partition key and sort key
- P
partition key's type
- S
sort key's type
- tableName
table's name
- indexName
index's name
- partitionKeyDef
partition key's definition
- sortKeyDef
sort key's definition
- Annotations
- @deprecated
- Deprecated
(Since version 2021-05-24) use meteor.api.hi.SecondaryCompositeIndex instead
- case class CompositeKeysTable[P, S](tableName: String, partitionKeyDef: KeyDef[P], sortKeyDef: KeyDef[S]) extends CompositeKeysIndex[P, S] with Product with Serializable
Represent a table which has both partition key and sort key
Represent a table which has both partition key and sort key
- P
partition key's type
- S
sort key's type
- tableName
table's name
- partitionKeyDef
partition key's definition
- sortKeyDef
sort key's definition
- Annotations
- @deprecated
- Deprecated
(Since version 2021-05-24) use meteor.api.hi.CompositeTable instead
- case class PartitionKeySecondaryIndex[P](tableName: String, indexName: String, partitionKeyDef: KeyDef[P]) extends PartitionKeyIndex[P] with Product with Serializable
Represent a secondary index which has only partition key
Represent a secondary index which has only partition key
- P
partition key's type
- tableName
table's name
- indexName
secondary index's name
- partitionKeyDef
partition key's definition
- Annotations
- @deprecated
- Deprecated
(Since version 2021-05-24) use meteor.api.hi.SecondarySimpleIndex instead
- case class PartitionKeyTable[P](tableName: String, partitionKeyDef: KeyDef[P]) extends PartitionKeyIndex[P] with Product with Serializable
Represent a table which has only partition key
Represent a table which has only partition key
- P
partition key's type
- tableName
table's name
- partitionKeyDef
partition key's definition
- Annotations
- @deprecated
- Deprecated
(Since version 2021-05-24) use meteor.api.hi.SimpleTable instead
Value Members
- object Client
- object DynamoDbType
- object Expression extends Serializable
- object Query extends Serializable
- object SortKeyQuery
- object errors
- object syntax extends syntax