Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/luismeyer/duenamodb

Simple DynamoDB client
https://github.com/luismeyer/duenamodb

Last synced: 22 days ago
JSON representation

Simple DynamoDB client

Awesome Lists containing this project

README

        

# dÜnamodb 📀

Simple DynamoDB client written in TypeScript.

## Setup 🛠

Install the package

```bash
pnpm install duenamodb
```

```bash
npm install duenamodb
```

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

```ts
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:

```ts
const putItem = createPutItem(tableName);
```

Get item:

```ts
const getItem = createGetItem(tableName, partitionKeyName);
```

Update item:

```ts
const updateItem = createUpdateItem(tableName);
```

Scan items:

```ts
const scanItems = createScanItems(tableName);
```

Query items:

```ts
const queryItems = createQueryItems(tableName, {
name,
partitionKeyName,
});
```

Delete item:

```ts
const deleteItem = createDeleteItem(
tablename,
partitionKeyName
);
```

### Utilites

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

```ts
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:

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

Get item:

```ts
const getResult = await getItem('1');
```

Update item:

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

Scan items:

```ts
const scanResult = await scanItems();
```

Query items:

```ts
const queryResult = await queryItems('foo');
```

Delete item:

```ts
const success = await deleteItem('1');
```