# @kemuscorp/mongodb-crud

A library to handler a CRUD on your MongoDB.

## How to install

### Using npm

`$ npm install @kemuscorp/mongodb-crud`

## Usage

```js
const { MongoLib } = require('@kemuscorp/mongodb-crud')

// Connecting the client to the database
const database = new MongoLib({
  hostname: process.env.HOSTNAME,
  port: proccess.env.PORT,
  username: process.env.USERNAME,
  password: process.env.PASSWORD,
  database: process.env.DATABASE
})

```

Take in mind that **hostname** and **database** are the only properties required. However, consider using a username, password and changing the default port of your MongoDB database in production.

## Methods

Check out the available methods of MongoLib instance.

<details>
  <summary>
    <code>Method getAll(collection, query)</code>
  </summary>

  The method getAll returns a promise with all data of a collection. This method is based on the find method of MongoDB collection method: [db.collection.find()]('https://docs.mongodb.com/manual/reference/method/db.collection.find/')

**Example**

  ```js
  database.getAll('users', { email })
    .then(users => console.log(users))
    .catch(error => console.error(error))
  ```

</details>

<details>
  <summary>
    <code>Method get(collection, id)</code>
  </summary>

  The method **get** returns a promise with the data of a collection based on an ID. This method is based on the findOne method of MongoDB collection method: [db.collection.findOne()]('https://docs.mongodb.com/manual/reference/method/db.collection.findOne/')

**Example**

  ```js
  database.get('users', '60de157106ce8c61cb76c6f9')
    .then(user => console.log(user))
    .catch(error => console.error(error))
  ```

</details>

<details>
  <summary>
    <code>Method create(collection, data)</code>
  </summary>

  The method **create** returns a promise with the full document created on the collection based on the data you passed. This method is based on the findOne method of MongoDB collection method: [db.collection.findOne()]('https://docs.mongodb.com/manual/reference/method/db.collection.findOne/')

**Example**

  ```js
  database.create('users', { email: 'user@labs.kemuscorp.com', password: 'averystrongpassword' })
    .then(id => console.log(id))
    .catch(error => console.error(error))
  ```

</details>

<details>
  <summary>
    <code>Method update(collection, id, data)</code>
  </summary>

  The method **update** returns a promise with the document updated on the collection based on the id and data you passed. This method is based on the updateOne method of MongoDB collection method: [db.collection.updateOne()]('https://docs.mongodb.com/manual/reference/method/db.collection.updateOne/')

**Example**

  ```js
  database.replace('users', '60de157106ce8c61cb76c6f9', { email: 'newemail@kemuscorp.com' })
    .then(user => console.log(user))
    .catch(error => console.error(error))
  ```

</details>
<details>
  <summary>
    <code>Method replace(collection, id, data)</code>
  </summary>

  The method **replace** returns a promise with the document replaced on the collection based on the id and data you passed. This method is based on the replaceOne method of MongoDB collection method: [db.collection.replaceOne()]('https://docs.mongodb.com/manual/reference/method/db.collection.replaceOne/')

**Example**

  ```js
  database.update('users', '60de157106ce8c61cb76c6f9', { email: 'newemail@kemuscorp.com' })
    .then(user => console.log(user))
    .catch(error => console.error(error))
  ```

</details>
<details>
  <summary>
    <code>Method delete(collection, id)</code>
  </summary>

  The method **delete** returns a promise with the document's id deleted. This method is based on the deleteOne method of MongoDB collection method: [db.collection.deleteOne()]('https://docs.mongodb.com/manual/reference/method/db.collection.deleteOne/')

**Example**

  ```js
  database.delete('users', '60de157106ce8c61cb76c6f9')
    .then(id => console.log(id))
    .catch(error => console.error(error))
  ```

</details>
