loopback-history-extension
v6.1.0
Published
DataModels with history extension for Loopback v4
Downloads
11
Readme
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:
UID
: A unique record identifier of the historyBeginDate
: Record creation dateEndDate
: Record deletion dateID
: 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
- Change your model parent class from
Entity
toHistoryEntity
- 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 ([email protected])