Zmeu213/beanstalk-promises

View on GitHub
README.md

Summary

Maintainability
Test Coverage
# beanstalk-promises
[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)
[![Test Coverage](https://codeclimate.com/github/Zmeu213/beanstalk-promises/badges/coverage.svg)](https://codeclimate.com/github/Zmeu213/beanstalk-promises/coverage) 
[![Issue Count](https://codeclimate.com/github/Zmeu213/beanstalk-promises/badges/issue_count.svg)](https://codeclimate.com/github/Zmeu213/beanstalk-promises)

Promise wraper for fivebeans client so you can use promises instead of callbacks and await them

### Quick start
```javascript
const Beanstalk = require('beanstalk-promises')

async function main () {
    let client = new Beanstalk()
    await client.connect('127.0.0.1', 11300, 1000)
    await client.watchTube('test')
    let job = await client.getJob()
    await client.quit()
}

main()
```

### Functions

- `constructor(debug, default_ttl)`
Create new instance of beanstalk-promises client. 
  - If `debug` is true (or if it just exist) it will print debug messages.
  - `default_ttl` is a parameter that sets how long job could be reserved.

- `.connect(host, port, reconnect)`
  - `reconnect` is a number in miliseconds, client will reconnect to beanstalk after it if something happens. Set `0` to disable.

- `.quit()`
Disconnects the client, no reconnect.

- `.watchTube(tube)` return number of watched tubes
  - `tube` name of tube to watch 
  
- `.useTube(tube)` return name of tube used by client
  - `tube` name of tube to use
  
- `.getJob()` return a `job`. Get available for reserve job from *tubes* watched by client.

- `job` is object
```javascript
{
  id: jobid,    // Job id 
  data: payload // Job data
}
```
- `.buryJob(job)` takes whole `job` object (or just something that have .id property) and bury it

- `.releaseJob(job)` releases a `job`

- `.checkJob()` return `true` if there is avalable for release job in tube *used* by client. Return false if not. 
Dont reserve jobs, just check. 

- `.putJob(data, priority, delay)` put job to a tube *used* by a client
  - `data` payload for future job.
  - `priority` smaller integer means higher priority. Default is `0`.
  - `delay` delay in seconds. Default is `0`.
  
- `deleteJob(job)` delete job
  - `job` job object 

- `.stats()` Return stats of the server

- `.statsTube(name)` Return stats of tube
  - `name` name of tube

- `.listTubes()` List tubes. Yes.

### License
*MIT*