Documentation ¶
Overview ¶
Package dynamo offers a rich DynamoDB client.
Index ¶
- Variables
- func Marshal(v interface{}) (*dynamodb.AttributeValue, error)
- func MarshalItem(v interface{}) (map[string]*dynamodb.AttributeValue, error)
- func Unmarshal(av *dynamodb.AttributeValue, out interface{}) error
- func UnmarshalItem(item map[string]*dynamodb.AttributeValue, out interface{}) error
- type Batch
- type BatchGet
- type BatchWrite
- type CreateTable
- func (ct *CreateTable) Project(index string, projection IndexProjection, includeAttribs ...string) *CreateTable
- func (ct *CreateTable) Provision(readUnits, writeUnits int64) *CreateTable
- func (ct *CreateTable) ProvisionIndex(index string, readUnits, writeUnits int64) *CreateTable
- func (ct *CreateTable) Run() error
- func (ct *CreateTable) RunWithContext(ctx aws.Context) error
- func (ct *CreateTable) Stream(view StreamView) *CreateTable
- type DB
- type Delete
- func (d *Delete) If(expr string, args ...interface{}) *Delete
- func (d *Delete) OldValue(out interface{}) error
- func (d *Delete) OldValueWithContext(ctx aws.Context, out interface{}) error
- func (d *Delete) Range(name string, value interface{}) *Delete
- func (d *Delete) Run() error
- func (d *Delete) RunWithContext(ctx aws.Context) error
- type DeleteTable
- type IndexProjection
- type Iter
- type Keyed
- type Keys
- type Marshaler
- type Operator
- type Order
- type Put
- type Query
- func (q *Query) All(out interface{}) error
- func (q *Query) Consistent(on bool) *Query
- func (q *Query) Count() (int64, error)
- func (q *Query) CountWithContext(ctx aws.Context) (int64, error)
- func (q *Query) Filter(expr string, args ...interface{}) *Query
- func (q *Query) GetLastEvaluatedKey() map[string]*dynamodb.AttributeValue
- func (q *Query) Index(name string) *Query
- func (q *Query) Iter() Iter
- func (q *Query) Limit(limit int64) *Query
- func (q *Query) One(out interface{}) error
- func (q *Query) OneWithContext(ctx aws.Context, out interface{}) error
- func (q *Query) Order(order Order) *Query
- func (q *Query) Project(paths ...string) *Query
- func (q *Query) Range(name string, op Operator, values ...interface{}) *Query
- func (q *Query) SearchLimit(limit int64) *Query
- func (q *Query) StartKey(dynamoAttributes map[string]*dynamodb.AttributeValue) *Query
- type Scan
- func (s *Scan) All(out interface{}) error
- func (s *Scan) Consistent(on bool) *Scan
- func (s *Scan) Filter(expr string, args ...interface{}) *Scan
- func (s *Scan) GetLastEvaluatedKey() map[string]*dynamodb.AttributeValue
- func (s *Scan) Index(name string) *Scan
- func (s *Scan) Iter() Iter
- func (s *Scan) Limit(limit int64) *Scan
- func (s *Scan) Project(paths ...string) *Scan
- func (s *Scan) StartKey(dynamoAttributes map[string]*dynamodb.AttributeValue) *Scan
- type StreamView
- type Table
- func (table Table) Batch(hashAndRangeKeyName ...string) Batch
- func (table Table) Delete(name string, value interface{}) *Delete
- func (table Table) DeleteTable() *DeleteTable
- func (table Table) Get(name string, value interface{}) *Query
- func (table Table) Name() string
- func (table Table) Put(item interface{}) *Put
- func (table Table) Scan() *Scan
- func (table Table) Update(hashKey string, value interface{}) *Update
- type Unmarshaler
- type Update
- func (u *Update) Add(path string, value interface{}) *Update
- func (u *Update) AddFloatsToSet(path string, values ...float64) *Update
- func (u *Update) AddIntsToSet(path string, values ...int) *Update
- func (u *Update) AddStringsToSet(path string, values ...string) *Update
- func (u *Update) Append(path string, value interface{}) *Update
- func (u *Update) DeleteFloatsFromSet(path string, values ...float64) *Update
- func (u *Update) DeleteIntsFromSet(path string, values ...int) *Update
- func (u *Update) DeleteStringsFromSet(path string, values ...string) *Update
- func (u *Update) If(expr string, args ...interface{}) *Update
- func (u *Update) OldValue(out interface{}) error
- func (u *Update) OldValueWithContext(ctx aws.Context, out interface{}) error
- func (u *Update) Prepend(path string, value interface{}) *Update
- func (u *Update) Range(name string, value interface{}) *Update
- func (u *Update) Remove(paths ...string) *Update
- func (u *Update) Run() error
- func (u *Update) RunWithContext(ctx aws.Context) error
- func (u *Update) Set(path string, value interface{}) *Update
- func (u *Update) SetIfNotExists(path string, value interface{}) *Update
- func (u *Update) Value(out interface{}) error
- func (u *Update) ValueWithContext(ctx aws.Context, out interface{}) error
Constants ¶
This section is empty.
Variables ¶
var ( // ErrNotFound is returned when no items could be found in Get or OldValue a and similar operations. ErrNotFound = errors.New("dynamo: no item found") // ErrTooMany is returned when one item was requested, but the query returned multiple items. ErrTooMany = errors.New("dynamo: too many items") )
var ( Equal = Operator(aws.String("EQ")) NotEqual = Operator(aws.String("NE")) Less = Operator(aws.String("LT")) LessOrEqual = Operator(aws.String("LE")) Greater = Operator(aws.String("GT")) GreaterOrEqual = Operator(aws.String("GE")) BeginsWith = Operator(aws.String("BEGINS_WITH")) Between = Operator(aws.String("BETWEEN")) )
Operators used for comparing against the range key.
var ( Ascending = Order(aws.Bool(true)) // ScanIndexForward = true Descending = Order(aws.Bool(false)) // ScanIndexForward = false )
Orders for sorting results.
var RetryTimeout = 1 * time.Minute
RetryTimeout defines the maximum amount of time that requests will attempt to automatically retry for. In other words, this is the maximum amount of time that dynamo operations will block. Higher values are better when using tables with lower throughput.
Functions ¶
func Marshal ¶
func Marshal(v interface{}) (*dynamodb.AttributeValue, error)
Marshal converts the given value into a DynamoDB attribute value.
func MarshalItem ¶
func MarshalItem(v interface{}) (map[string]*dynamodb.AttributeValue, error)
MarshalItem converts the given struct into a DynamoDB item.
func Unmarshal ¶
func Unmarshal(av *dynamodb.AttributeValue, out interface{}) error
Unmarshal decodes a DynamoDB value into out, which must be a pointer.
func UnmarshalItem ¶
func UnmarshalItem(item map[string]*dynamodb.AttributeValue, out interface{}) error
Unmarshal decodes a DynamoDB item into out, which must be a pointer.
Types ¶
type Batch ¶
type Batch struct {
// contains filtered or unexported fields
}
Batch stores the names of the hash key and range key for creating new batches.
func (Batch) Get ¶
Get creates a new batch get item request with the given keys.
table.Batch("ID", "Month"). Get([]dynamo.Keys{{1, "2015-10"}, {42, "2015-12"}, {42, "1992-02"}}...). All(&results)
func (Batch) Write ¶
func (b Batch) Write() *BatchWrite
Write creates a new batch write request, to which puts and deletes can be added.
type BatchGet ¶
type BatchGet struct {
// contains filtered or unexported fields
}
BatchGet is a BatchGetItem operation.
func (*BatchGet) All ¶
All executes this request and unmarshals all results to out, which must be a pointer to a slice.
func (*BatchGet) Consistent ¶
Consistent will, if on is true, make this batch use a strongly consistent read. Reads are eventually consistent by default. Strongly consistent reads are more resource-heavy than eventually consistent reads.
type BatchWrite ¶
type BatchWrite struct {
// contains filtered or unexported fields
}
BatchWrite is a BatchWriteItem operation.
func (*BatchWrite) Delete ¶
func (bw *BatchWrite) Delete(keys ...Keyed) *BatchWrite
Delete adds delete operations for the given keys to this batch.
func (*BatchWrite) Put ¶
func (bw *BatchWrite) Put(items ...interface{}) *BatchWrite
Put adds put operations for items to this batch.
func (*BatchWrite) Run ¶
func (bw *BatchWrite) Run() (wrote int, err error)
Run executes this batch. For batches with more than 25 operations, an error could indicate that some records have been written and some have not. Consult the wrote return amount to figure out which operations have succeeded.
func (*BatchWrite) RunWithContext ¶
func (bw *BatchWrite) RunWithContext(ctx aws.Context) (wrote int, err error)
type CreateTable ¶
type CreateTable struct {
// contains filtered or unexported fields
}
CreateTable is a request to create a new table. See: http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html
func (*CreateTable) Project ¶
func (ct *CreateTable) Project(index string, projection IndexProjection, includeAttribs ...string) *CreateTable
Project specifies the projection type for the given table. When using IncludeProjection, you must specify the additional attributes to include via includeAttribs.
func (*CreateTable) Provision ¶
func (ct *CreateTable) Provision(readUnits, writeUnits int64) *CreateTable
Provision specifies the provisioned read and write capacity for this table. If Provision isn't called, the table will be created with 1 unit each.
func (*CreateTable) ProvisionIndex ¶
func (ct *CreateTable) ProvisionIndex(index string, readUnits, writeUnits int64) *CreateTable
ProvisionIndex specifies the provisioned read and write capacity for the given global secondary index. Local secondary indices share their capacity with the table.
func (*CreateTable) Run ¶
func (ct *CreateTable) Run() error
Run creates this table or returns and error.
func (*CreateTable) RunWithContext ¶
func (ct *CreateTable) RunWithContext(ctx aws.Context) error
func (*CreateTable) Stream ¶
func (ct *CreateTable) Stream(view StreamView) *CreateTable
Stream enables DynamoDB Streams for this table which the specified type of view. Streams are disabled by default.
type DB ¶
type DB struct {
// contains filtered or unexported fields
}
DB is a DynamoDB client.
func New ¶
func New(p client.ConfigProvider, cfgs ...*aws.Config) *DB
New creates a new client with the given configuration.
func (*DB) CreateTable ¶
func (db *DB) CreateTable(name string, from interface{}) *CreateTable
CreateTable begins a new operation to create a table with the given name. The second parameter must be a struct with appropriate hash and range key struct tags for the primary key and all indices.
An example of a from struct follows:
type UserAction struct { UserID string `dynamo:"ID,hash" index:"Seq-ID-index,range"` Time time.Time `dynamo:",range"` Seq int64 `localIndex:"ID-Seq-index,range" index:"Seq-ID-index,hash"` UUID string `index:"UUID-index,hash"` }
This creates a table with the primary hash key ID and range key Time. It creates two global secondary indices called UUID-index and Seq-ID-index, and a local secondary index called ID-Seq-index.
type Delete ¶
type Delete struct {
// contains filtered or unexported fields
}
Delete is a request to delete an item. See: http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html
func (*Delete) If ¶
If specifies a conditional expression for this delete to succeed. Use single quotes to specificy reserved names inline (like 'Count'). Use the placeholder ? within the expression to substitute values, and use $ for names. You need to use quoted or placeholder names when the name is a reserved word in DynamoDB.
func (*Delete) OldValue ¶
OldValue executes this delete request, unmarshaling the previous value to out. Returns ErrNotFound is there was no previous value.
func (*Delete) OldValueWithContext ¶
type DeleteTable ¶
type DeleteTable struct {
// contains filtered or unexported fields
}
DeleteTable is a request to delete a table. See: http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteTable.html
func (*DeleteTable) Run ¶
func (dt *DeleteTable) Run() error
Run executes this request and deletes the table.
func (*DeleteTable) RunWithContext ¶
func (dt *DeleteTable) RunWithContext(ctx aws.Context) error
type IndexProjection ¶
type IndexProjection string
IndexProjection determines which attributes are mirrored into indices.
var ( // Only the key attributes of the modified item are written to the stream. KeysOnlyProjection IndexProjection = dynamodb.ProjectionTypeKeysOnly // All of the table attributes are projected into the index. AllProjection IndexProjection = dynamodb.ProjectionTypeAll // Only the specified table attributes are projected into the index. IncludeProjection IndexProjection = dynamodb.ProjectionTypeInclude )
type Iter ¶
type Iter interface { // Next tries to unmarshal the next result into out. // Returns false when it is complete or if it runs into an error. Next(out interface{}) bool // Err returns the error encountered, if any. // You should check this after Next is finished. Err() error }
Iter is an iterator for request results.
type Keyed ¶
type Keyed interface { HashKey() interface{} RangeKey() interface{} }
Keyed provides hash key and range key values.
type Keys ¶
type Keys [2]interface{}
Keys provides an easy way to specify the hash and range keys.
table.Batch("ID", "Month"). Get([]dynamo.Keys{{1, "2015-10"}, {42, "2015-12"}, {42, "1992-02"}}...). All(&results)
type Marshaler ¶
type Marshaler interface {
MarshalDynamo() (*dynamodb.AttributeValue, error)
}
Marshaler is the interface implemented by objects that can marshal themselves into an AttributeValue.
type Put ¶
type Put struct {
// contains filtered or unexported fields
}
Put is a request to create or replace an item. See: http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html
func (*Put) If ¶
If specifies a conditional expression for this put to succeed. Use single quotes to specificy reserved names inline (like 'Count'). Use the placeholder ? within the expression to substitute values, and use $ for names. You need to use quoted or placeholder names when the name is a reserved word in DynamoDB.
type Query ¶
type Query struct {
// contains filtered or unexported fields
}
Query is a request to get one or more items in a table. Query uses the DynamoDB query for requests for multiple items, and GetItem for one. See: http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html and http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html
func (*Query) All ¶
All executes this request and unmarshals all results to out, which must be a pointer to a slice.
func (*Query) Consistent ¶
Consistent will, if on is true, make this query a strongly consistent read. Queries are eventually consistent by default. Strongly consistent reads are more resource-heavy than eventually consistent reads.
func (*Query) Filter ¶
Filter takes an expression that all results will be evaluated against. Use single quotes to specificy reserved names inline (like 'Count'). Use the placeholder ? within the expression to substitute values, and use $ for names. You need to use quoted or placeholder names when the name is a reserved word in DynamoDB. Multiple calls to Filter will be combined with AND.
func (*Query) GetLastEvaluatedKey ¶
func (q *Query) GetLastEvaluatedKey() map[string]*dynamodb.AttributeValue
func (*Query) One ¶
One executes this query and retrieves a single result, unmarshaling the result to out.
func (*Query) OneWithContext ¶
func (*Query) Order ¶
Order specifies the desired result order. Requires a range key (a.k.a. partition key) to be specified.
func (*Query) Range ¶
Range specifies the range key (a.k.a. sort key) or keys to get. For single item requests using One, op must be Equal. Name is the name of the range key. Op specifies the operator to use when comparing values.
func (*Query) SearchLimit ¶
SearchLimit specifies the maximum amount of results to examine. If a filter is not specified, the number of results will be limited. If a filter is specified, the number of results to consider for filtering will be limited.
type Scan ¶
type Scan struct {
// contains filtered or unexported fields
}
Scan is a request to scan all the data in a table. See: http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Scan.html
func (*Scan) All ¶
All executes this request and unmarshals all results to out, which must be a pointer to a slice.
func (*Scan) Consistent ¶
Consistent will, if on is true, make this scan use a strongly consistent read. Scans are eventually consistent by default. Strongly consistent reads are more resource-heavy than eventually consistent reads.
func (*Scan) Filter ¶
Filter takes an expression that all results will be evaluated against. Use single quotes to specificy reserved names inline (like 'Count'). Use the placeholder ? within the expression to substitute values, and use $ for names. You need to use quoted or placeholder names when the name is a reserved word in DynamoDB.
func (*Scan) GetLastEvaluatedKey ¶
func (s *Scan) GetLastEvaluatedKey() map[string]*dynamodb.AttributeValue
type StreamView ¶
type StreamView string
StreamView determines what information is written to a table's stream.
var ( // Only the key attributes of the modified item are written to the stream. KeysOnlyView StreamView = dynamodb.StreamViewTypeKeysOnly // The entire item, as it appears after it was modified, is written to the stream. NewImageView StreamView = dynamodb.StreamViewTypeNewImage // The entire item, as it appeared before it was modified, is written to the stream. OldImageView StreamView = dynamodb.StreamViewTypeOldImage // Both the new and the old item images of the item are written to the stream. NewAndOldImagesView StreamView = dynamodb.StreamViewTypeNewAndOldImages )
type Table ¶
type Table struct {
// contains filtered or unexported fields
}
Table is a DynamoDB table.
func (Table) Batch ¶
Batch creates a new batch with the given hash key name, and range key name if provided. For purely Put batches, neither is necessary.
func (Table) Delete ¶
Delete creates a new request to delete an item. Key is the name of the hash key (a.k.a. partition key). Value is the value of the hash key.
func (Table) DeleteTable ¶
func (table Table) DeleteTable() *DeleteTable
DeleteTable begins a new request to delete this table.
func (Table) Get ¶
Get creates a new request to get an item. Name is the name of the hash key (a.k.a. partition key). Value is the value of the hash key.
type Unmarshaler ¶
type Unmarshaler interface {
UnmarshalDynamo(av *dynamodb.AttributeValue) error
}
Unmarshaler is the interface implemented by objects that can unmarshal an AttributeValue into themselves.
type Update ¶
type Update struct {
// contains filtered or unexported fields
}
Update represents changes to an existing item. It uses the UpdateItem API. See: http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html
func (*Update) Add ¶
Add adds value to path. Path can be a number or a set. If path represents a set, value must be []int or []string. Path must be a top-level attribute.
func (*Update) AddFloatsToSet ¶
AddFloatsToSet adds the given values to the number set specified by path.
func (*Update) AddIntsToSet ¶
AddIntsToSet adds the given values to the number set specified by path.
func (*Update) AddStringsToSet ¶
AddStringsToSet adds the given values to the string set specified by path.
func (*Update) DeleteFloatsFromSet ¶
DeleteFloatsFromSet deletes the given values from the number set specified by path.
func (*Update) DeleteIntsFromSet ¶
DeleteIntsFromSet deletes the given values from the number set specified by path.
func (*Update) DeleteStringsFromSet ¶
DeleteStringsFromSet deletes the given values from the string set specified by path.
func (*Update) If ¶
If specifies a conditional expression for this update to succeed. Use single quotes to specificy reserved names inline (like 'Count'). Use the placeholder ? within the expression to substitute values, and use $ for names. You need to use quoted or placeholder names when the name is a reserved word in DynamoDB.
func (*Update) OldValueWithContext ¶
func (*Update) Set ¶
Set changes path to the given value. Paths that are reserved words are automatically escaped. Use single quotes to escape complex values like 'User'.'Count'.
func (*Update) SetIfNotExists ¶
SetIfNotExists changes path to the given value, if it does not already exist.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
internal
|
|
exprs
Package exprs is the internal package for parsing DynamoDB "expressions", including condition expressions and filter expressions.
|
Package exprs is the internal package for parsing DynamoDB "expressions", including condition expressions and filter expressions. |