# wmv-caspio-client (WorkMovr Caspio Client) #

This library is developed by WorkMor Team to connect NodeJS applications to the Caspio REST API.

This library is developed using TypeScript v4.0.2

## Usage ##

```typescript
import { WMVCaspioClient } from 'wmv-caspio-client';

const connection = WMVCaspioClient.createConnection({
    /* Connection details here */
});

connection.connect()
    .then(() => {
        // Successfully connected to the Caspio REST API
    })
    .catch((error) => {
        // Error response from Caspio REST API
    });
```

To make it easy to use the connection object in the different modules, package provides a connection manager. The connection manager will help to get all the connections or to get a single connection using the connection name, that is specified in the connection details.

```typescript
import { WMVCaspioClient } from 'wmv-caspio-client';

const connection = WMVCaspioClient.connections.get('/* connection name */');
```

## How to requests ##

To create a request object, there is a **createRequest** method on the connection.

```typescript

const getRequest = connection.createRequest('GET', {
    resource: 'keywords: table or view',
    resourceName: 'resource name',
    where: {
      like: [
        {
          source: 'column name',
          value: 'column value',
        },
      ],
      equals: [
        {
          source: 'column name',
          value: 'column value',
        },
      ],
      in: [
        {
          source: 'column name',
          value: 'values separated by comma',
        }
      ]
    },
    select: [/* Array of column names */],
    orderBy: 'ordering string', // Ex: email ASC
    groupBy: 'grouping string',
    limit: 1000, // Number from 1 to 1000
    pageNumber: 1; // Page number to get
    pageSize: 10; // The size of the page
});

getRequest.send()
    .then((response) => {
        // Successful response
    })
    .catch((error) => {
        // Error response
    });
```

The where section supports 3 types of conditions: **like**, **in**, **equals**. Each of these keys has an array of objects, where must be specified conditions.

There are 4 supported request types: **GET**, **POST**, **PUT**, **DELETE**.

For **POST** and **PUT** requests, the **send()** method takes and argument, thet must be the object to send to the Caspio:

```typescript
postRequest.send({key: 'value'})
    .then((response) => {
        // Successful response
    })
    .catch((error) => {
        // Error response
    });
```