3.0.14 • Published 4 months ago

@evokegroup/aws-dynamodb v3.0.14

Weekly downloads
-
License
ISC
Repository
bitbucket
Last release
4 months ago

@evokegroup/aws-dynamodb

AWS SDK v3 DynamoDB utilities.

Put Item

const { createClient, putItem } = require('@evokegroup/aws-dynamodb');

putItem({
  client: createClient({ region: 'REGION' }),
  tableName: 'TABLE_NAME',
  data: {
    ID: 'ea8623e7-07f9-4b0e-bbd0-e11f00ccace6',
    Email: 'john.doe@gmail.com',
    FirstName: 'John',
    LastName: 'Doe',
    Phone: {
      Mobile: '555-123-4567',
      Home: '555-987-6543'
    },
    HowContact: ['email', 'mobile', 'home'],
    DateCreated: '2022-01-01T00:00:00.000Z'
  }
})
  .then((response) => {
    // do something
  })
  .catch((err) => {
    // do something
  })

Get Item

const { createClient, getItem } = require('@evokegroup/aws-dynamodb');
getItem({
  client: createClient({ region: 'REGION' }),
  tableName: 'TABLE_NAME',
  key: { PK: 'ea8623e7-07f9-4b0e-bbd0-e11f00ccace6' }
})
  .then((response) => {
    // do something
  })
  .catch((err) => {
    // do something
  })

Update Item

const { createClient, updateItem } = require('@evokegroup/aws-dynamodb');

updateItem({
  client: createClient({ region: 'REGION' }),
  tableName: 'TABLE_NAME',
  partitionKey: { ID: 'ea8623e7-07f9-4b0e-bbd0-e11f00ccace6' },
  SET: {
    FirstName: 'Jonathan',
    Address: {
      State: 'NY',
      ZIP: '12345'
    }
  },
  REMOVE: ['Phone.Home'],
  DELETE: {
    HowContact: ['home']
  },
  createMaps: true // This will create any undefined map (Address in this case) BEFORE updating the table. Default: true
})
  .then((response) => {
    // do something
  })
  .catch((err) => {
    // do something
  });

Query

const { createClient, query, transformObjectFromDDB } = require('@evokegroup/aws-dynamodb');

query({
  client: createClient({ region: 'REGION' }),
  tableName: 'TABLE_NAME',
  indexName: 'GSI_EMAIL',
  keyCondition: {
    Email: 'john.doe@gmail.com'
  }
})
  .then((response) => {
    if (response.Items.length == 1) {
      resolve(transformObjectFromDDB(response.Items[0])); // Transform the response from the DynamoDB format to a regular object
    } else {
      resolve(null);
    }
  })
  .catch((err) => {
    // do something
  });

Delete Item

const { createClient, deleteItem } = require('@evokegroup/aws-dynamodb');

deleteItem({
  client: createClient({ region: 'REGION' }),
  tableName: 'TABLE_NAME',
  partitionKey: { PK: 'ea8623e7-07f9-4b0e-bbd0-e11f00ccace6'}
})
  .then((response) => {
    // do something
  })
  .catch((ex) => {
    console.error(ex);
  });

Batch Write

const { createClient } = require('@evokegroup/aws-dynamodb');
const { batchWrite, BatchWriteInput } = require('@evokegroup/aws-dynamodb/batch');

batchWrite({
  client: createClient({ region: 'REGION' }),
  batchWriteInput: [
    new BatchWriteInput({
      tableName: 'TABLE_NAME',
      putItems: [{
        ID: '*',
        Email: '*'
        // other data
      }],
      deleteItemKeys: [{ ID: '-' }]
    })
  ]
})
  .then((response) => {
    // do something
  })
  .catch((ex) => {
    console.error(ex);
  });

// OR
batchWrite({
  client: createClient({ region: 'REGION' }),
  batchWriteInput: [
    new BatchWriteInput({
      tableName: 'TABLE_NAME',
      putItems: [{
        ID: '*',
        Email: '*'
        // other data
      }],
      deleteItemKeys: [{ ID: '-' }]
    })
  ],
  awaiter: true
})
  // wait(callback, pollingTimeout = 10000)
  // pass a polling timeout in milliseconds as the 2nd parameter to poll faster or slower
  // starts execution and returns a Promise
  .wait((awaiter) => {
    console.log(`Batches remaining: ${awaiter.remainint()}`);
  }) 
  .then((response) => {
    // do something
  })
  .catch((ex) => {
    console.error(ex);
  });

Create Table

const { createClient } = require('@evokegroup/aws-dynamodb');
const { StringPartitionKeyField, StringSortKeyField } = require('@evokegroup/aws-dynamodb/fields');
const { createTable } = require('@evokegroup/aws-dynamodb/table');
require('@evokegroup/aws-dynamodb/logger').configure({ level: 'INFO' });
createTable({
  client: createClient({ region: 'REGION' }),
  tableName: 'TABLE_NAME',
  partitionKey: new StringPartitionKeyField({ name: 'PK' }),
  sortKey: new StringSortKeyField({ name: 'SK' })
})
  .then((response) => {
    // do something
  })
  .catch((ex) => {
    console.error(ex);
  });

Logger

Send messages logged by the library to a Console.

const { configure, LogLevel } = require('@evokegroup/aws-dynamodb/logger');
configure({ 
  level: LogLevel.DEBUG, // default: OFF
  timestamp: true, // default: false
  messageType: true, // default: false
  Console: null // create your own Console object to log to somewhere other that the global console
});
require('@evokegroup/aws-dynamodb/logger').configure({ level: 'ERROR' });
3.0.13

4 months ago

3.0.14

4 months ago

3.0.12

7 months ago

3.0.10

7 months ago

3.0.11

7 months ago

3.0.8

7 months ago

3.0.9

7 months ago

3.0.4

2 years ago

3.0.3

2 years ago

3.0.2

2 years ago

3.0.1

2 years ago

3.0.7

2 years ago

3.0.6

2 years ago

3.0.5

2 years ago

3.0.0

2 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago