Skip to content

chunkai1312/sequelize-activitylog

Repository files navigation

sequelize-activitylog

NPM version Build Status Coverage Status

A sequelize plugin for logging activities

Install

$ npm install --save sequelize-activitylog

Usage

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): Promise

Log an activity.

performedOn()

performedOn(model: Model): this

Specify on which object the activity is performed.

causedBy()

causedBy(model: Model): this

Set who or what caused the activity.

withProperties()

withProperties(properties: object): this

Add properties to the activity.

withProperty()

withProperty(key: string, value: any): this

Add a property to the activity by key.

useLog()

useLog(logName: string): this

Specify log name of the activity.

use()

use(logName: string): this

Alias of useLog().

on()

on(model: Model): this

Alias of performedOn().

by()

by(model: Model): this

Alias of causedBy().

with()

with(properties: object): this
with(key: string, value: any): this

Alias of withProperties() / withProperty().

Note

Inspired by laravel-activitylog

License

MIT © Chun-Kai Wang

About

A sequelize plugin for logging activities

Resources

License

Stars

Watchers

Forks

Packages

No packages published