Giter Site home page Giter Site logo

jimmysorza / loopback-softdelete-mixin Goto Github PK

View Code? Open in Web Editor NEW

This project forked from joeybenenati/loopback-softdelete-mixin

0.0 1.0 0.0 34 KB

SoftDelete mixin for Loopback. Same functionality as the original, with the exception that it does not use the isDeleted property. I find this obsolete as it's the same as checking if deletedAt value. This is a fork from loopback-softdelete-mixin with this pull request applied: Adds support for MongoDB.

JavaScript 100.00%

loopback-softdelete-mixin's Introduction

SoftDelete

This module is designed for the Strongloop Loopback framework. It allows entities of any Model to be "soft deleted" by adding a deletedAt attribute. Queries following the standard format will not return these entities; they can only be accessed by adding { deleted: true } to the query object (at the same level as where, include etc).

This is a fork from loopback-softdelete-mixin4 with added functionality to provide an indexing property option.

Install

  npm install --save loopback-softdelete-mixin4

SERVER CONFIG

Add the mixins property to your server/model-config.json:

{
  "_meta": {
    "sources": [
      "loopback/common/models",
      "loopback/server/models",
      "../common/models",
      "./models"
    ],
    "mixins": [
      "loopback/common/mixins",
      "../node_modules/loopback-softdelete-mixin4",
      "../common/mixins"
    ]
  }
}

MODEL CONFIG

To use with your Models add the mixins attribute to the definition object of your model config.

  {
    "name": "Widget",
    "properties": {
      "name": {
        "type": "string",
      },
    },
    "mixins": {
      "SoftDelete" : true,
    },
  },

There are a number of configurable options to the mixin. You can specify an alternative property name for deletedAt, as well as configuring deletion to "scrub" the entity. If true, this sets all but the "id" fields to null. If an array, it will only scrub properties with those names.

  "mixins": {
    "SoftDelete": {
      "deletedAt": "deleted_at",
      "scrub": true,
      "index": true
    },
  ...
  "list_user_index": {
      "keys": {
        "userId": 1,
        "listId": -1,
        "deleteIndex": true
      },
      "options": {
        "unique": true 
      } 
    }
  },

If "index" is set to true, an additional property called deleteIndex will be configured and set to a random string at the time of delete. This is to provide indexing support for the following scenario.

A GroupMembership model which has a userId and groupId relation to User, and Group models with unique indexing configured to prevent duplicate relations between users and groups. Without the "index" option enabled, soft delete will break this kind of indexing and allow duplicate memberships.

NOTES: Indexing option has only been tested with the MySQL connector. Enabling "index" does not create the index. This must be done manually in model.json.

Retrieving deleted entities

To run queries that include deleted items in the response, add { deleted: true } to the query object (at the same level as where, include etc).

loopback-softdelete-mixin's People

Contributors

asaf050 avatar gausie avatar joeybenenati avatar jouke avatar thochi avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.