# apidoc-sequelize-generator

> Automatically generates examples for apidoc from sequelize model definitions

Latest version **1.0.5** (published 2016-05-18) · MIT license · 0 weekly downloads

## Install

```sh
npm install apidoc-sequelize-generator
pnpm add apidoc-sequelize-generator
yarn add apidoc-sequelize-generator
bun add apidoc-sequelize-generator
```

## 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.5 |
| Published | 2016-05-18 |
| First published | 2016-01-23 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 7 |
| Author | Jerko Steiner |
| Maintainers | jeremija |
| Keywords | sequelize, apidoc, generator, apidocjs |

## Links

- npm: https://www.npmjs.com/package/apidoc-sequelize-generator
- Repository: https://github.com/jeremija/apidoc-sequelize-generator
- Homepage: https://github.com/jeremija/apidoc-sequelize-generator#readme
- Issues: https://github.com/jeremija/apidoc-sequelize-generator/issues
- npm.io page: https://npm.io/package/apidoc-sequelize-generator

## Dependencies (1)

- [underscore](https://npm.io/package/underscore.md) ^1.8.3

## 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

- 1.0.5 (latest) — 2016-05-18
- 1.0.4 — 2016-02-11
- 1.0.3 — 2016-02-01
- 1.0.2 — 2016-01-24
- 1.0.1 — 2016-01-23
- 1.0.0 — 2016-01-23

## README

# apidoc-sequelize-generator

[![Build Status](https://travis-ci.org/jeremija/apidoc-sequelize-generator.svg?branch=master)](https://travis-ci.org/jeremija/apidoc-sequelize-generator)

Automatically generate definitions for [apidoc](http://apidocjs.com/) from
sequelize models.

# installation

```bash
npm install apidoc-sequelize-generator
```

# usage

## quick example

Here is a full example along with sequelize model definitions generating the
apidoc comments:

```javascript
var Sequelize = require('sequelize');
var sequelize = new Sequelize('sqlite://');
var gendoc = require('apidoc-sequelize-generator');

var parent = sequelize.define('parent', {
  name: {
    type: Sequelize.STRING,
    allowNull: false
  }
});

var child = sequelize.define('child', {
  name: {
    type: Sequelize.STRING,
  },
  birthday: {
    type: Sequelize.DATE,
    allowNull: true
  }
});

parent.hasMany(child);

var docs = gendoc(sequelize).auto().toString();

console.log(docs);
```

The output will contain apidoc comments which can then be reused by using
`@apiUse <name>` any time the specific model is expected in object body or
response:

```javascript
/**
 * @apiDefine parentParam
 * @apiParam {integer} id
 * @apiParam {string} name
 * @apiParam {date} createdAt
 * @apiParam {date} updatedAt
 * @apiParam {child[]} children
 */

/**
 * @apiDefine parentRequest
 * @apiParamExample {json} Request
 *     {
 *       "id": 1,
 *       "name": "string",
 *       "createdAt": "2015-12-31T23:59:59.123",
 *       "updatedAt": "2015-12-31T23:59:59.123",
 *       "children": [
 *         {
 *           "id": 1,
 *           "name": "string",
 *           "birthday": "2015-12-31T23:59:59.123",
 *           "createdAt": "2015-12-31T23:59:59.123",
 *           "updatedAt": "2015-12-31T23:59:59.123",
 *           "parentId": 1
 *         }
 *       ]
 *     }
 */

/**
 * @apiDefine parentArrayRequest
 * @apiParamExample {json} Request
 *     [
 *       {
 *         "id": 1,
 *         "name": "string",
 *         "createdAt": "2015-12-31T23:59:59.123",
 *         "updatedAt": "2015-12-31T23:59:59.123",
 *         "children": [
 *           {
 *             "id": 1,
 *             "name": "string",
 *             "birthday": "2015-12-31T23:59:59.123",
 *             "createdAt": "2015-12-31T23:59:59.123",
 *             "updatedAt": "2015-12-31T23:59:59.123",
 *             "parentId": 1
 *           }
 *         ]
 *       }
 *     ]
 */

/**
 * @apiDefine parentResponse
 * @apiSuccessExample {json} Response
 *     {
 *       "id": 1,
 *       "name": "string",
 *       "createdAt": "2015-12-31T23:59:59.123",
 *       "updatedAt": "2015-12-31T23:59:59.123",
 *       "children": [
 *         {
 *           "id": 1,
 *           "name": "string",
 *           "birthday": "2015-12-31T23:59:59.123",
 *           "createdAt": "2015-12-31T23:59:59.123",
 *           "updatedAt": "2015-12-31T23:59:59.123",
 *           "parentId": 1
 *         }
 *       ]
 *     }
 */

/**
 * @apiDefine parentArrayResponse
 * @apiSuccessExample {json} Response
 *     [
 *       {
 *         "id": 1,
 *         "name": "string",
 *         "createdAt": "2015-12-31T23:59:59.123",
 *         "updatedAt": "2015-12-31T23:59:59.123",
 *         "children": [
 *           {
 *             "id": 1,
 *             "name": "string",
 *             "birthday": "2015-12-31T23:59:59.123",
 *             "createdAt": "2015-12-31T23:59:59.123",
 *             "updatedAt": "2015-12-31T23:59:59.123",
 *             "parentId": 1
 *           }
 *         ]
 *       }
 *     ]
 */

/**
 * @apiDefine childParam
 * @apiParam {integer} id
 * @apiParam {string} name
 * @apiParam {date} [birthday]
 * @apiParam {date} createdAt
 * @apiParam {date} updatedAt
 * @apiParam {integer} [parentId]
 */

/**
 * @apiDefine childRequest
 * @apiParamExample {json} Request
 *     {
 *       "id": 1,
 *       "name": "string",
 *       "birthday": "2015-12-31T23:59:59.123",
 *       "createdAt": "2015-12-31T23:59:59.123",
 *       "updatedAt": "2015-12-31T23:59:59.123",
 *       "parentId": 1
 *     }
 */

/**
 * @apiDefine childArrayRequest
 * @apiParamExample {json} Request
 *     [
 *       {
 *         "id": 1,
 *         "name": "string",
 *         "birthday": "2015-12-31T23:59:59.123",
 *         "createdAt": "2015-12-31T23:59:59.123",
 *         "updatedAt": "2015-12-31T23:59:59.123",
 *         "parentId": 1
 *       }
 *     ]
 */

/**
 * @apiDefine childResponse
 * @apiSuccessExample {json} Response
 *     {
 *       "id": 1,
 *       "name": "string",
 *       "birthday": "2015-12-31T23:59:59.123",
 *       "createdAt": "2015-12-31T23:59:59.123",
 *       "updatedAt": "2015-12-31T23:59:59.123",
 *       "parentId": 1
 *     }
 */

/**
 * @apiDefine childArrayResponse
 * @apiSuccessExample {json} Response
 *     [
 *       {
 *         "id": 1,
 *         "name": "string",
 *         "birthday": "2015-12-31T23:59:59.123",
 *         "createdAt": "2015-12-31T23:59:59.123",
 *         "updatedAt": "2015-12-31T23:59:59.123",
 *         "parentId": 1
 *       }
 *     ]
 */
```

This code is located in [example](example) directory.

## description of other methods

If you already have sequelize model definitions and wish to automatically
generate documentation of it's models, you can do so easily:

```javascript
var docgen = require('apidoc-sequelize-generator');
var sequelize = require('./path/to/my/sequelize/instance.js');

/*
 * automatically generate documentation for all model definitions
 */
var docs = docgen(sequelize).auto();
console.log(docs.toString());

/*
 * only include the child association for myModel
 */
docs = docgen(sequelize).auto({
  myModel: {
    include: [{
      model: 'child'
    }]
  }
});
// all model definitions, but myModel will only contain the child association
console.log(docs.toString());


/*
 * add custom samples for certain type definitions
 */
docs = docgen(sequelize, {
  DATE: '2015-12-31 23:59:59'
}).auto();
console.log(docs.toString())


/*
 * create a sample object
 */
var object = docgen(sequelize).createObject(sequelize.models.myModel);
console.log(object);

/*
 * create a params definition for object
 */
object = docgen(sequelize).defineDoc(sequelize.models.myModel, 'Param');
console.log(object);

/*
 *create all definitions for object
 */
docs = docgen(sequelize).defineAll(sequelize.models.myModel, 'Param');
console.log(docs.toString());

```

See examples of generated documents [here](test/samples).

See more details in the [test cases](test/lib-test.js).

# contributing

Pull requests are welcome. Just make sure all eslint rules pass and the tests
pass, and that the coverage is high enough. You can check that with:

```
npm run lint
npm test
npm run coverage
```

# license

MIT

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