bookshelf-soft-delete

    5.0.0 • Public • Published

    Bookshelf Soft Delete

    build status

    This plugin works with Bookshelf.js, available here http://bookshelfjs.org, in order to introduce a soft deletion. What this means is that items will appear deleted to an end user, but will not in fact be removed from the database.

    Installation

    npm install bookshelf-soft-delete
    

    Then in your bookshelf configuration:

    var bookshelf = require('bookshelf')(knex);
    bookshelf.plugin(require('bookshelf-soft-delete'));
    

    Usage

    On your bookshelf Model which you would like to mark for soft deletion:

    soft: true
    

    or, if you don't want to use the default column names (deleted_at and restored_at) :

    soft: ['deletionDate', 'restorationDate']
    

    or, if you don't want to use restored_at column :

    soft: ['deleted_at']
    

    Please note that strictly speaking any truthy value will be sufficient. This will override destroy to simply set the deleted_at column of the corresponding table to the Date stamp at moment of deletion, and override the collection fetch and fetchOne to filter out model instances where deleted_at is set. Please note, that if you set this on a Model, the table for which does not have a deleted_at column or an optional restored_at column, an error event will be emited when your model is created.

    If you wish to disable soft delete for a given operation, e.g., fetch, simply pass an object with softDelete: false to that operation.

    YourModel.where("id", searchId)
        .fetch({softDelete: false})
    

    If you need to restore something which has been soft deleted, model.restore will do this.

    Usage with a custom initialize function

    This package has an initialize function that wires everthing up. If you declare a custom initialize function, you need to make sure to call the initialize function on the prototype from the custom initialize function in order for everything to work properly.

    var repository = require('./repo');
    
    module.exports = repository.Model.extend({
      tableName: 'users',
      soft: true,
    
      initialize: function() {
        this.on('saving', this.validate);
        repository.Model.prototype.initialize.apply(this, arguments);
      },
    
      validate: function() {
        ...
      }
    });

    Install

    npm i bookshelf-soft-delete

    DownloadsWeekly Downloads

    332

    Version

    5.0.0

    License

    MIT

    Unpacked Size

    90.5 kB

    Total Files

    36

    Last publish

    Collaborators

    • juliusza
    • lanetix-system