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-comments
Note: 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-comments
by 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: