sequelize-activitylog v1.1.0
sequelize-activitylog
A sequelize plugin for logging activities
Install
$ npm install --save sequelize-activitylogUsage
Define the Activity model
Create Activity model named activity_log and then use the model methods.
const Sequelize = require('sequelize')
const activitylog = require('sequelize-activitylog')
const Activity = activitylog(sequelize, { modelName: 'activity_log' })Log an activity
This is the most basic way to log activity:
await new Activity().log('Look mum, I logged something')You can retrieve the activity using the Activity model.
const activity = await Activity.findOne({ order: [ ['created_at', 'DESC'] ] }) // returns the last logged activity
activity.description // returns 'Look mum, I logged something'Set a subject
You can specify on which object the activity is performed by using performedOn:
await new Activity()
  .performedOn(someContentModel)
  .log('edited')
const activity = await Activity.findOne({ order: [ ['created_at', 'DESC'] ] }) // returns the last logged activity
activity.getSubject() // returns the model that was passed to `performedOn`The performedOn() function has a shorter alias name: on
Set a causer
You can set who or what caused the activity by using causedBy:
await new Activity()
  .performedOn(someContentModel)
  .causedBy(userModel)
  .log('edited')
const activity = await Activity.findOne({ order: [ ['created_at', 'DESC'] ] }) // returns the last logged activity
activity.getCauser() // returns the model that was passed to `causedBy`The causedBy() function has a shorter alias named: by
Set custom properties
You can add any property you want to an activity by using withProperties:
await new Activity()
  .performedOn(someContentModel)
  .causedBy(userModel)
  .withProperties({ key: 'value' })
  .log('edited')
const activity = await Activity.findOne({ order: [ ['created_at', 'DESC'] ] }) // returns the last logged activity
activity.properties // returns `{ key: 'value' }`
activity.getExtraProperty('key') // returns 'value'The withProperties() function has a shorter alias named: with
API
log()
log(description: string): PromiseLog an activity.
performedOn()
performedOn(model: Model): thisSpecify on which object the activity is performed.
causedBy()
causedBy(model: Model): thisSet who or what caused the activity.
withProperties()
withProperties(properties: object): thisAdd properties to the activity.
withProperty()
withProperty(key: string, value: any): thisAdd a property to the activity by key.
useLog()
useLog(logName: string): thisSpecify log name of the activity.
use()
use(logName: string): thisAlias of useLog().
on()
on(model: Model): thisAlias of performedOn().
by()
by(model: Model): thisAlias of causedBy().
with()
with(properties: object): this
with(key: string, value: any): thisAlias of withProperties() / withProperty().
Note
Inspired by laravel-activitylog
License
MIT © Chun-Kai Wang