# dynamo-rest-wrapper-optimizer

> A DynamoDB REST Wrapper & Optimizer for NodeJS

Latest version **1.0.4** (published 2018-10-06) · ISC license · 0 weekly downloads

## Install

```sh
npm install dynamo-rest-wrapper-optimizer
pnpm add dynamo-rest-wrapper-optimizer
yarn add dynamo-rest-wrapper-optimizer
bun add dynamo-rest-wrapper-optimizer
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.4 |
| Published | 2018-10-06 |
| First published | 2018-08-21 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 2 |
| Unpacked size | 26.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Matt Lachance |
| Maintainers | chomama05 |
| Keywords | DynamoDB, REST, API |

## Links

- npm: https://www.npmjs.com/package/dynamo-rest-wrapper-optimizer
- Repository: https://github.com/chomama05/dynamo-rest-wrapper-optimizer
- Homepage: https://github.com/chomama05/dynamo-rest-wrapper-optimizer#readme
- Issues: https://github.com/chomama05/dynamo-rest-wrapper-optimizer/issues
- npm.io page: https://npm.io/package/dynamo-rest-wrapper-optimizer

## Dependencies (2)

- [uuid4](https://npm.io/package/uuid4.md) ^1.0.0
- [dynamodb-data-types](https://npm.io/package/dynamodb-data-types.md) ^3.0.1

## Alternatives

- [launchdarkly-js-client-sdk](https://npm.io/package/launchdarkly-js-client-sdk.md) — 2.5M weekly downloads
- [@elastic/elasticsearch](https://npm.io/package/@elastic/elasticsearch.md) — 2.1M weekly downloads
- [@c8y/client](https://npm.io/package/@c8y/client.md) — 15.3K weekly downloads
- [@signaldb/maverickjs](https://npm.io/package/@signaldb/maverickjs.md) — 1.7K weekly downloads
- [@bbc/http-transport-cache](https://npm.io/package/@bbc/http-transport-cache.md) — 1.2K weekly downloads

## Recent versions

- 1.0.4 (latest) — 2018-10-06
- 1.0.3 — 2018-10-06
- 1.0.2 — 2018-09-30
- 1.0.1 — 2018-08-27
- 1.0.0 — 2018-08-21

## README

# dynamo-rest-wrapper-optimizer
## Dynamo REST Wrapper & Optimizer
This module attempts to simplify the interaction between a NodeJS application and DynamoDB using a RESTful protocol.

The need for this package came from the lack of libraries out there to simply create a REST API.

It exposes the common functions _GET_, _POST_, _PUT_ & _DELETE_

It is simple in design, as it does not do any validation, leaving it up to the implementation.

_Side Note_: This was created to be used in combination with other AWS Services. (API Gateway & Lambda Functions)

_**Limitation_: This module only supports Dynamo tables that use a HASH Key only. HASH-RANGE Keys are not supported.

## Requirements
`Node 7.6` & Higher

## Installation
```bash
npm install dynamo-rest-wrapper-optimizer
```
## Usage
__async/await__
```javascript
const AWS = require('aws-sdk');
const dynamoRestHelper = require('dynamo-rest-wrapper-optimizer');
const dynamoConnection = new AWS.DynamoDB();

var myTableName = "MyTableName";
var myQuery = {"firstName":"John"};
var queryLimit = 1;
//var offsetKey = "{{OFFSETKEY_HERE}}"

var {err, result} = await dynamoRestHelper.get(dynamoConnection, myTableName, myQuery, queryLimit, offsetKey);
```


## Quick Examples
### GET
__Non-Primary Key Query__
_Returns Array of results_
```javascript
var {err, result} = await dynamoRestHelper.get(dynamoConnection, "Users", {"firstName":"John"}, 2);

if(err){
    //Something went wrong...
    console.log(err);
}
console.log(result);
/*
Will output:
{
    "data":[
        {"firstName":"John","lastName":"Doe","age": 59,"email":"john_doe@gmail.com","userId":"abb7bd05-aaaf-49e7-b5a7-e2953342f17d"},
        {"firstName":"John","lastName":"Smith","age": 21,"email":"john_smith@hotmail.com","userId":"756d1605-5686-4ac0-af23-c03d41acd3d6"}
    ],
    "LastEvaluatedKey":"eyJleHBlcmltZW50SWQiOnsiUyI6ImFiYjdiZDA1LWFhYWYtNDllNy1iNWE3LWUyOTUzMzQyZjE3ZCJ9fQ=="
}
*/
```
__Primary Key Query__
_Returns Single result_
```javascript
var {err, result} = await dynamoRestHelper.get(dynamoConnection, "Users", {"userId":"abb7bd05-aaaf-49e7-b5a7-e2953342f17d"});

if(err){
    //Something went wrong...
    console.log(err);
}
console.log(result);
/*
Will output:
{
    "data":{"firstName":"John","lastName":"Doe","age": 59,"email":"john_doe@gmail.com","userId":"abb7bd05-aaaf-49e7-b5a7-e2953342f17d"}
}
*/
```

### POST
__Insert New Record__
_Returns Single result_

__SideNote__: Specifying Primary key is not necessary. A UUID4 will be generated
```javascript
var {err, result} = await dynamoRestHelper.post(dynamoConnection, "Users", {"firstName":"Eric", "lastName":"Smith", "age":15});

if(err){
    //Something went wrong...
    console.log(err);
}
console.log(result);
/*
Will output:
{
    "data":{"userId":"ae52de04-e897-425d-beaa-078d72a4ecf5","firstName":"Eric", "lastName":"Smith", "age":15}
}
*/
```

### PUT
__Updates an Existing Record__
_Returns Single result_

__SideNote__: Specifying Primary key is required. If not, will throw error
```javascript
var {err, result} = await dynamoRestHelper.put(dynamoConnection, "Users", {"userId":"ae52de04-e897-425d-beaa-078d72a4ecf5", "age": 16});

if(err){
    //Something went wrong...
    console.log(err);
}
console.log(result);
/*
Will output:
{
    "data":{"userId":"ae52de04-e897-425d-beaa-078d72a4ecf5","firstName":"Eric", "lastName":"Smith", "age":16}
}
*/
```

### DELETE
__Delete an Existing Record__
_Returns 'true' if successful_

__SideNote__: Specifying Primary key is required. If not, will throw error (Will also throw error if a non-existant key is specified)
```javascript
var {err, result} = await dynamoRestHelper.delete(dynamoConnection, "Users", {"userId":"ae52de04-e897-425d-beaa-078d72a4ecf5"});

if(err){
    //Something went wrong...
    console.log(err);
}
console.log(result);
/*
Will output:
true
*/
```

---
_Source: https://npm.io/package/dynamo-rest-wrapper-optimizer · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
