# dt-server

> Server-side processing implemention for datatables

Latest version **0.0.3** (published 2017-10-19) · MIT license · 0 weekly downloads

## Install

```sh
npm install dt-server
pnpm add dt-server
yarn add dt-server
bun add dt-server
```

## Health

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

Positive: no vulnerabilities.

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

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.3 |
| Published | 2017-10-19 |
| First published | 2017-10-17 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Fekadeab Dejene |
| Maintainers | fdejene |
| Keywords | datatable, datatables.net, sqlite3, serverside, processing |

## Links

- npm: https://www.npmjs.com/package/dt-server
- Repository: https://github.com/fekadeabdejene/dt-server
- Homepage: https://github.com/fekadeabdejene/dt-server#readme
- Issues: https://github.com/fekadeabdejene/dt-server/issues
- npm.io page: https://npm.io/package/dt-server

## Alternatives

- [@sindresorhus/slugify](https://npm.io/package/@sindresorhus/slugify.md) — 3.7M weekly downloads
- [solid-js](https://npm.io/package/solid-js.md) — 2.7M weekly downloads
- [expo-glass-effect](https://npm.io/package/expo-glass-effect.md) — 2.5M weekly downloads
- [nanoassert](https://npm.io/package/nanoassert.md) — 780.8K weekly downloads
- [@ffmpeg/ffmpeg](https://npm.io/package/@ffmpeg/ffmpeg.md) — 529.5K weekly downloads

## Recent versions

- 0.0.3 (latest) — 2017-10-19
- 0.0.2 — 2017-10-18
- 0.0.1 — 2017-10-17

## README

dt-server -
A wrapper around a datatable server side processing
=======
[![Build Status via Travis CI](https://travis-ci.org/fekadeabdejene/dt-server.svg?branch=master)](https://travis-ci.org/fekadeabdejene/dt-server)
[![Coverage Status](https://coveralls.io/repos/github/fekadeabdejene/dt-server/badge.svg?branch=master)](https://coveralls.io/github/fekadeabdejene/dt-server?branch=master)
### Installation
```
npm install dt-server
```

### Dependencies
None


### Example Usage (Express)
There are four main objects in this project.

DtRequest  
  - Wraps the raw query from a datatable with added helper functionality

DtResponse
  - Wraps an adapter - a SQLite adapter is provided - and generates a valid response

DtServer   
  - Handles creation of the above objects and returns the response

Adapter
  - A class that implements the interface seen below in the DtSql3 Object

```js
var DtServer = require('dt-server')
var db       = require('MockSql3DB').Database

router.get('/dtsql3', function(req, res, next) {  

  var dtServer = DtServer('sql3', db, {
    response: {
      format: 'object-array'
    }
  })

  dtServer.get(req.query,'USERS')
  .then(function(results) {
    res.status(200).json(results)
  })
  .catch(function(err) {
    res.status(400).json(err)
  })
})
```

### API

- `DtServer([adapter], [options])`
  * `[adapter]` Adapter for a database I.E. DtSql3 wraps the SQLite database
  * `[options]` Custom options

- `DtServer.get([request], [model], (optional)[params])`
  * `[request]` Datatable JSON request object
  * `[model]` Model to get from the database
  * `[params]` Optional database parameters
  * `returns` {Promise}

- `DtSql3([Database])`
  * `[Database]` Database object`

- `DtSql3.get([dtRequest], [model], (optional)[params])`
  * `[dtRequest]` DtRequest object`
  * `[model]` Model to get from the database`
  * `[params]` Optional database parameters`
  * `returns`{Promise}`

### Extending
Implementing the interface seen in DtSql3 will allow you to pass that adapter
as you would the DtSql3 object

### Available Options
Defaults
```js
{
  request: {
    excludeRegex: 'true' //'true'|'false'
    filter: function(str, regex) {
      return str
    },
    validate: 'true' //'true'|'false'
  },

  response: {
    format: 'object-array', //object-array, value-array,
    formatData: undefined, //Array function(data, format) { }
    validate: 'false', 'true'|'false'
  }
}
```

Pass an object with one, or more of these options to override the defaults
* `request.exlcudeRegex` removes search columns using regex
* `request.filter` A function that augments incoming search strings
* `request.validate` Flag to validate the datatable JSON request object
* `response.format` Format of the response data from an adapter

* `Example Formats`
   * `object-array => [{name: 'a', address: 'b'}, ...]`
   * `value-array => [['a', 'b'], ...]`
* `request.formatData` Custom data formatting function used in-place of the default format function
* `request.validate` Flag to validate JSON response object

## License
MIT

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