# @omegalabs/repo-mongodb

> An MongoDb implementation for the Repository pattern for data persistence.

Latest version **1.0.0** (published 2020-05-10) · ISC license · 0 weekly downloads

## Install

```sh
npm install @omegalabs/repo-mongodb
pnpm add @omegalabs/repo-mongodb
yarn add @omegalabs/repo-mongodb
bun add @omegalabs/repo-mongodb
```

## 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.0 |
| Published | 2020-05-10 |
| First published | 2020-05-10 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 19 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Sean Travis Taylor |
| Maintainers | seanttaylor |

## Links

- npm: https://www.npmjs.com/package/@omegalabs/repo-mongodb
- npm.io page: https://npm.io/package/@omegalabs/repo-mongodb

## Dependencies (1)

- [mongodb](https://npm.io/package/mongodb.md) ^3.3.4

## Recent versions

- 1.0.0 (latest) — 2020-05-10

## README

## Mongo Repository

This module is intended for use with the `@omegalabs/repo-core` package. When used with the `repo-core` package this module provides an implementation of the `repo-core` interface for a MongoDB database. 


#### Installation and Use

1. Do an `npm install @omegalabs/repo-mongodb` (shortened as`repo-mongodb` below) to install the package on your local machine. 
2. Require the package in your project along with the  `@omegalabs/repo-core` package.
3. Instantiate the `repo-mongodb` package with options (see Configuration Options below.)
4. Instantiate the `repo-core` package, providing the `repo-mongodb` package as an argument.

_For detailed explanation of the API see the `repository-core` documentation._

#### Tests

Note: Both Docker and Docker Compose are **required** to run the unit tests for the Monog Repository. 

Run the unit tests for `repo-mongodb` with the `npm test` command.

The test suite will produce a report afer the test run is complete.

#### Example Usage 

```
const config = {
    datasourceConfig: {
        databaseHost: 'mongo_db',
        databasePassword: 'root',
        databaseUsername: 'root',
        databaseName: 'my_database'
    }
};
const mongoRepo = require('@seanttaylor/omega-repo-mongo)(config);
const Repository = require('@seanttaylor/omega-repository-core)
const beerRepo = Repository(jsonRepo);
const beer = {
    name: 'Indiana Pale Ale',
    kind: 'ale'
}

const result = await beerRepo.add(beer, 'beers_collection');
/*{
    error: null,
    status: 'ok',
    data: [
        {
            _id: '5e2f99c9fa38672ff424622b'
            name: 'Indiana Pale Ale',
            kind: 'ale',
            _createdAt: '2020-01-28T02:19:33Z'
        }
    ]
}*/

const searchResult = await beerRepo.findOne('5e2f99c9fa38672ff424622b', 'beers_table);
/*
    Same output as above.
*/

```

#### Configuration Options

Fields and acceptable values for the options object of `repo-mongodb`.

|    option    | type   |       description                                    |
|:------------:|--------|:----------------------------------------------------:|
| `datasourceConfig` | object | Configuration options for the datasource. |


##### Datasource Configuration 

| option             | type    | default                   | description                                                                                                   |
|--------------------|---------|---------------------------|---------------------------------------------------------------------------------------------------------------|
| databaseHost       | string  | mongo_db                     | Hostname to connect to the database.                                                                          |
| datatbaseUsername  | string  | root                      | Username to connect to the database.                                                                          |
| databasePassword   | string  | root                      | Password to connect to the database.                                                                          |
| databasePort       | integer | 27017                     | Port to connect to the database.                                                                              |

##### Additional MongoDB Configuration

Below are additional options that may be included on the repo configuration object, _outside_ the datasourceConfig object. See the MongoDB documentation for more information on available options.

| option             | type    | default                   | description                                                                                                   |
|--------------------|---------|---------------------------|---------------------------------------------------------------------------------------------------------------|
| useNewUrlParser    | boolean | true                      | See mongodb docs: https://mongoosejs.com/docs/deprecations.html                                               |
| autoReconnect      | boolean | true                      | Reconnect on error.                                                                                           |
| reconnectTries     | integer | 60                        | Server attempt to reconnect #times                                                                            |
| reconnectInterval  | integer | 25000                     | Server will wait # milliseconds between retries.                                                              |
| retryWrite         | boolean | false                     | See mongodb docs: https://docs.mongodb.com/manual/core/retryable-writes/                                      |
| ssl                | boolean | true [disabled]           | Use ssl connection (needs to have a mongod server with ssl support)                                           |
| sslValidate        | boolean | true [disabled]           | Validate mongod server certificate against ca (needs to have a mongod server with ssl support, 2.4 or higher) |
| useUnifiedTopology | boolean | false                     | See mongodb docs.                                                                                             |

---
_Source: https://npm.io/package/@omegalabs/repo-mongodb · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
