sequelize-model-comments v0.0.4
Sequelize Model Comments
Comments support for your sequelize models. Record the user who created the comment. When used along with sequelize-paper-trail, annotates revisions with a user supplied comment.
Table of Contents
Installation
npm install --save sequelize-model-commentsNote: the current test suite is very limited in coverage.
Usage
Sequelize Model Comments assumes that you have already set up your Sequelize connection, for example, like this:
var Sequelize = require('sequelize');
var sequelize = new Sequelize('database', 'username', 'password');then adding Sequelize Model Comments is as easy as:
var ModelComments = require('sequelize-model-comments').init(sequelize, options);
ModelComments.defineModels({});which loads the Model Comments library, and the defineModels() method sets up a Comments table.
Note: If you pass userModel option to init in order to enable user tracking, userModel should be setup before defineModels() is called.
Then for each model that you want to keep a model comments you simply add:
Model.enableModelComments();Example
var Sequelize = require('sequelize');
var sequelize = new Sequelize('database', 'username', 'password');
var ModelComments = require('sequelize-model-comments').init(sequelize, options || {});
ModelComments.defineModels();
var Post = sequelize.define('Post', {
title: Sequelize.STRING,
content: Sequelize.STRING,
});
Post.enableModelComments();User Tracking
There are 2 steps to enable user tracking, ie, recording the user who created a comment.
1. Enable user tracking by passing userModel option to init, with the name of the model which stores users in your application as the value.
var options = {
/* ... */
userModel: 'users',
};- Pass the id of the user who is responsible for a database operation to
sequelize-model-commentsby sequelize options.
Post.update({
/* ... */
comment: 'This attribute will be used to create a comment which annotates the revision'
}, {
userId: user.id
}).then(() {
/* ... */
});Options
Model Comments supports various options that can be passed into the initialization. The following are the default options:
Default options
// Default options
var options = {
commentModel: 'Comment',
UUID: false,
underscored: false,
underscoredAttributes: false,
defaultAttributes: {
documentId: 'documentId',
model: 'model'
},
};Options documentation
| Option | Type | Default Value | Description |
|---|---|---|---|
| debug | Boolean | false | Enables logging to the console. |
| commentModel | String | 'Comment | Name of the model that keeps the comments. |
| UUID | Boolean | false | The commentModel has id attribute of type UUID for postgresql. |
| underscored | Boolean | false | The commentModel has 'createdAt' and 'updatedAt' attributes, by default, setting this option to true changes it to 'created_at' and 'updated_at'. |
| underscoredAttributes | Boolean | false | The commentModel has a defaultAttribute 'documentId' by default, setting this option to true changes it to 'document_id'. |
| defaultAttributes | Object | { documentId: 'documentId', model: 'model' } | |
| userModel | String | Name of the model that stores users in your. |
Support
Please use:
- GitHub's issue tracker
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Added some feature') - Push to the branch (
git push origin my-new-feature) - Create new Pull Request
Author
© Lijo Antony – @lijo_ – lijozom@gmail.com
Distributed under the MIT license. See LICENSE for more information.
https://github.com/lijoantony/sequelize-model-comments
Thanks
This project was inspired by and derived from: