2.0.1 • Published 7 months ago

@mu-ts/dynamodb v2.0.1

Weekly downloads
-
License
ISC
Repository
github
Last release
7 months ago

Objective

Nice sugarry layer over top of DynamoDB to make utilizing it quitea bit cleaner. Uses @aws-sdk library which is more moduarlized so your deploy sizes should be smaller.

This class also makes use of @mu-ts/serialization for some convenience behaviors while working with objects, like field encoding/encryption and uuid generation.

Class Decoration

Pretty straight forward, for any class you want associated to a table, decorate with @table. The first argument is the table name, the remaining arguments are the keys that make up the hash key for the table.

This example shows a composite key, as do the examples throughout, but to do a signle key you would just use a single attribute.

import { table } from '@mu-ts/dynamodb';

@serializable
@table(process.env.USER_TABLE_NAME)
class User {

  @primaryKey
  name: string;

  @sortKey
  age: number;

  @encode('hex')
  group?: string;

}

Command Functions

A handful of utilities for the common cases. Want more, create a merge request with your implementation.

Get an item.

import { getItem } from '@mu-ts/dynamodb';

const timmy: User = new User();
user.name = 'timmy'

const user: User = await getItem(timmy);

// or if no object.
const user: User = await getItem({name: 'timmy'}, 'the-table');

Put an item.

import { putItem } from '@mu-ts/dynamodb';

const timmy: User = new User();
user.name = 'timmy'
user.age = 15
user.group = 'super special'

const user: User = await putItem(user);

Delete an item.

import { deleteItem } from '@mu-ts/dynamodb';

const timmy: User = new User();
user.name = 'timmy'
user.age = 15
await deleteItem(timmy);

// or if no object
await deleteItem({name: 'timmy', age: 15}, 'table-to-delete-from');

Update an item

Uses the PutItem command which only updates specific attributes, for a record matching the corresponding hash key. If no hash key matches then a new item is created.

The value returned is a merging together of the values passed in as well as the old values returned back from DynamoDB.

import { updateItem } from '@mu-ts/dynamodb'

let user: User = new User()
user.name = 'john'
user.age = 46
user.group = 'blue'

user = await updateItem(user)
2.0.1

7 months ago

2.0.0

7 months ago

1.0.5

1 year ago

1.0.2

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago