6.1.0 • Published 4 years ago

loopback-history-extension v6.1.0

Weekly downloads
9
License
MIT
Repository
github
Last release
4 years ago

loopback-history-extension

Saving history of Create, Update, Delete of a table sometimes is a big problem in data model design level.

A good approach for saving history is about adding some columns to your tables:

  1. UID: A unique record identifier of the history
  2. BeginDate: Record creation date
  3. EndDate: Record deletion date
  4. ID: History of one data is accessable using their same ID
  • Per every Create we will create a new record in table
  • Per every Update we will invalid last history, create new record
  • Per every Delete we will invalid last history

Now, using this simple extension you can add all history features to your models and repositories.


Installation

npm i --save loopback-history-extension

Usage

History Model

  1. Change your model parent class from Entity to HistoryEntity
  2. Remove id property from your model declaration

Example

Change your model from:

@model()
export class User extends Entity {
    @property({
        type: "string",
        unique: true,
        id: true
    })
    id: string;

    @property({
        type: "string",
        default: ""
    })
    username: string;

    constructor(data?: Partial<User>) {
        super(data);
    }
}

To:

import { HistoryEntity } from "loopback-history-extension";

@model()
export class User extends HistoryEntity {
    @property({
        type: "string",
        default: ""
    })
    username: string;

    constructor(data?: Partial<User>) {
        super(data);
    }
}

Tip

Don't use unique columns in your models

Convert your model from:

export class User extends Entity {
    @property({
        type: "string",
        required: true,
        index: {
            unique: true
        }
    })
    username: string;
}

To:

export class User extends HistoryEntity {
    @property({
        type: "string",
        required: true
    })
    username: string;
}

History Repository Mixin

Change your repository parent class from DefaultCrudRepository to HistoryCrudRepositoryMixin()()

Example

Change your repository from:

export class UserRepository extends DefaultCrudRepository<
    User,
    typeof User.prototype.id,
    UserRelations
> {
    // ...
}

To:

import { HistoryCrudRepositoryMixin } from "loopback-history-extension";

export class UserRepository extends HistoryCrudRepositoryMixin<
    User,
    UserRelations
>()() {
    // ...
}

Contributions

License

This project is licensed under the MIT license.
Copyright (c) KoLiBer (koliberr136a1@gmail.com)

6.1.0

4 years ago

6.0.0

4 years ago

5.5.0

4 years ago

5.4.0

4 years ago

5.3.0

4 years ago

5.2.0

4 years ago

5.1.0

4 years ago

5.0.0

4 years ago

4.5.0

4 years ago

4.4.0

4 years ago

4.3.0

4 years ago

4.2.0

4 years ago

4.1.0

4 years ago

4.0.0

4 years ago

3.2.0

4 years ago

3.1.0

4 years ago

3.0.0

4 years ago

2.5.0

4 years ago

2.4.0

4 years ago

2.3.0

4 years ago

2.2.5

4 years ago

2.2.4

4 years ago

2.2.3

4 years ago

2.2.2

4 years ago

2.2.1

4 years ago

2.2.0

4 years ago

2.1.0

4 years ago

2.0.0

4 years ago

1.1.0

4 years ago

1.0.0

5 years ago

0.4.0

5 years ago

0.3.1

5 years ago

0.3.0

5 years ago