Skip to content

luismeyer/duenamodb

Repository files navigation

dÜnamodb 📀

Simple DynamoDB client written in TypeScript.

Setup 🛠

Install the package

pnpm install duenamodb
npm install duenamodb

If not running in AWS Lambda configure the Client using the static accessor on the DDBClient class.

DDBClient.params = {
  region: 'localhost',
  endpoint: `http://localhost:8000`,
};

Also you might need to provide mock AWS credentials inside the environment variables.

API 📄

The API of dÜnamodb is straight forward. There is a create Function for every DynamoDB action.

Create the Functions 🏗

To interact with your DynamoDB use the create-functions from the dÜnamodb lib

Put item:

const putItem = createPutItem<Attributes>(tableName);

Get item:

const getItem = createGetItem<Attributes, string>(tableName, partitionKeyName);

Update item:

const updateItem = createUpdateItem<Attributes>(tableName);

Scan items:

const scanItems = createScanItems<Attributes>(tableName);

Query items:

const queryItems = createQueryItems<Attributes, number>(tableName, {
  name,
  partitionKeyName,
});

Delete item:

const deleteItem = createDeleteItem<Attributes, string>(
  tablename,
  partitionKeyName
);

Utilites

There is also a utility function that creates the scan, put, update, get and delete function.

const { getItem, scanItems, updateItem } = createTableFunctions<
  Attributes,
  string
>(tablename, partitionKeyName);

Use the Functions 👷‍♀️

Use the functions to read and write data from the DB

Put item:

await saveItem({ id: "1", name: "foo", ... });

Get item:

const getResult = await getItem('1');

Update item:

const updateResult = await updateItem(
  { ...item, name: 'bar' },
  { updateKeys: ['name'] }
);

Scan items:

const scanResult = await scanItems();

Query items:

const queryResult = await queryItems('foo');

Delete item:

const success = await deleteItem('1');