dynamo-easy
  • Introduction
  • Browser vs. Node usage
  • Get Started
    • Installation
    • Jump into code
  • API Doc
    • Config
      • Dynamo-Easy Config
      • AWS SDK Config
    • Model
      • Decorators
      • Mapping Concept
      • CustomMapper
    • Dynamo Store
      • Model Requests
    • Multi-Model Requests
    • Expressions (conditions, update)
Powered by GitBook
On this page
  • General
  • Creation
  • Request Params
  • Execution
  • Get
  • Put
  • Update
  • Delete
  • Query
  • Scan
  • BatchGet
  • BatchWrite
  • TransactGet

Was this helpful?

  1. API Doc
  2. Dynamo Store

Model Requests

Single model requests you can execute on a DynamoStore.

PreviousDynamo StoreNextMulti-Model Requests

Last updated 6 years ago

Was this helpful?

General

Creation

All model requests are created by using the corresponding method on a DynamoStore instance. A new request instance for the related model/table will be returned.

Request Params

Every request instance contains the public params property where all params for the request are written to. You might want to use it for debugging purpose but are also able to write on it (eg. non-covered features).

Consumed Capacity

You might want to receive the consumed capacity which can be achieved by applying the returnConsumedCapacity('INDEXES' | 'TOTAL') method and the usage of execFullResponse() instead of exec().

Execution

All requests provide at least two execution methods:

  • exec() returns a promise which will resolve to the requested items or void if no items were requested

  • execFullResponse() returns a promise which will resolve to the full response DynamoDB returns, but response.Items are still mapped for you.

Get

get.snippet.ts
import { DynamoStore } from '@shiftcoders/dynamo-easy'
import { Person } from '../models'

new DynamoStore(Person)
  .get('wernerv')        // returns an instance of GetRequest
  .consistentRead(true)  // sets params.ConsistentRead = true
  .exec()                // returns a Promise<Person|null>
  .then(obj => console.log(obj))

Put

put.snippet.ts
import { DynamoStore } from '@shiftcoders/dynamo-easy'
import { Person } from '../models'

const objectToPut: Person = {
  id: 'vogelsw',
  name: 'Werner Hans Peter Vogels',
  yearOfBirth: 1958,
} // object literal or new Person(...)

new DynamoStore(Person)
  .put(objectToPut)
  .ifNotExists()
  .exec()
  .then(() => console.log('done'))

Update

update-simple.snippet.ts
import { DynamoStore } from '@shiftcoders/dynamo-easy'
import { AnotherModel } from '../models'

const oneHourAgo = new Date(Date.now() - 1000 * 60 * 60)

new DynamoStore(AnotherModel)
  .update('myPartitionKey', 'mySortKey')
  .updateAttribute('propC').set('newValue')
  .updateAttribute('updated').set(new Date())
  .onlyIfAttribute('updated').lt(oneHourAgo)
  .exec()
  .then(() => console.log('done'))
update-complex.snippet.ts
import { attribute, DynamoStore, or, update } from '@shiftcoders/dynamo-easy'
import { AnotherModel } from '../models'

const index = 3
const oneHourAgo = new Date(Date.now() - 1000 * 60 * 60)

new DynamoStore(AnotherModel)
  .update('myPartitionKey', 'mySortKey')
  .operations(
    update(`myNestedList[${index}].propertyX`).set('value'),
    update('updated').set(new Date()),
  )
  .onlyIf(
    or(
      attribute('id').attributeNotExists(), // item not existing
      attribute('updated').lt(oneHourAgo), // or was not updated in the last hour
    ),
  )
  .returnValues('ALL_OLD')
  .exec()
  .then(oldVal => console.log('old value was:', oldVal))

Delete

delete.snippet.ts
import { DynamoStore } from '@shiftcoders/dynamo-easy'
import { Person } from '../models'

new DynamoStore(Person)
  .delete('vogelsw')
  .onlyIfAttribute('yearOfBirth').lte(1958)
  .exec()
  .then(() => console.log('done'))

Query

query.snippet.ts
import { DynamoStore } from '@shiftcoders/dynamo-easy'
import { AnotherModel } from '../models'

new DynamoStore(AnotherModel)
  .query()
  .wherePartitionKey('2018-01')
  .whereSortKey().beginsWith('a')
  .execSingle()
  .then(r => console.log('first found item:', r))

Scan

scan.snippet.ts
import { DynamoStore } from '@shiftcoders/dynamo-easy'
import { Person } from '../models'

new DynamoStore(Person)
  .scan()
  .whereAttribute('yearOfBirth').equals(1958)
  .execFetchAll()
  .then(res => console.log('ALL items with yearOfBirth == 1958', res))

BatchGet

This is a special implementation from BatchGetRequest which only allows to read from a single table.

batch-get.snippet.ts
import { DynamoStore } from '@shiftcoders/dynamo-easy'
import { Person } from '../models'

new DynamoStore(Person)
  .batchGet([{ id: 'a' }, { id: 'b' }])
  .exec()
  .then(res => console.log('fetched items:', res))

BatchWrite

This is a special implementation from BatchWriteRequest which only allows to write to a single table

batch-write.snippet.ts
import { DynamoStore } from '@shiftcoders/dynamo-easy'
import { Person } from '../models'

new DynamoStore(Person)
  .batchWrite()
  .delete([{ id: 'a' }, { id: 'b' }])
  .put([{ id: 'vogelsw', name: 'Werner Hans Peter Vogels', yearOfBirth: 1958 }])
  .exec()
  .then(() => console.log('item a, b deleted; werner vogels added'))

TransactGet

This is a special implementation from TransactGetRequest which only allows to read from a single table.

transact-get.snippet.ts
import { DynamoStore } from '@shiftcoders/dynamo-easy'
import { Person } from '../models'

new DynamoStore(Person)
  .transactGet([{ id: 'a' }, { id: 'b' }])
  .exec()
  .then(() => console.log('transactionally read a and b'))

BatchGetItem - Amazon DynamoDBAmazon DynamoDB
https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchGetItem.html
Logo
BatchWriteItem - Amazon DynamoDBAmazon DynamoDB
https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchWriteItem.html
Logo
TransactGetItems - Amazon DynamoDBAmazon DynamoDB
https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TransactGetItems.html
Logo
GetItem - Amazon DynamoDBAmazon DynamoDB
https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html
GetRequest | @shiftcoders/dynamo-easy
technical api doc
Logo
PutRequest | @shiftcoders/dynamo-easy
technical api doc
UpdateItem - Amazon DynamoDBAmazon DynamoDB
https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html
Logo
PutItem - Amazon DynamoDBAmazon DynamoDB
https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html
Logo
UpdateRequest | @shiftcoders/dynamo-easy
technical api doc
DeleteRequest | @shiftcoders/dynamo-easy
technical api doc
QueryRequest | @shiftcoders/dynamo-easy
technical api doc
ScanRequest | @shiftcoders/dynamo-easy
technical api doc
DeleteItem - Amazon DynamoDBAmazon DynamoDB
https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html
Query - Amazon DynamoDBAmazon DynamoDB
https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html
Logo
Logo
BatchGetSingleTableRequest | @shiftcoders/dynamo-easy
technical api doc
Scan - Amazon DynamoDBAmazon DynamoDB
https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Scan.html
Logo
TransactGetSingleTableRequest | @shiftcoders/dynamo-easy
technical api doc
BatchWriteSingleTableRequest | @shiftcoders/dynamo-easy
technical api doc