GithubHelp home page GithubHelp logo

sequelize-state-machine's Introduction

Sequelize State Machine (Work in progress)

If you're familiar with my AASM, then this is a similar take โ€“ just implemented in Sequelize v5 Model.

Installation

npm install sequelize-state-machine
or
yarn add sequelize-state-machine

Usage Example

//test.js model
import stateMachine from "sequelize-state-machine";
class Test extends Model {

    static states() {
        return [{"pending": {"initial": true}}, "active", {"inactive": {"final": true}}];
    }

    static stateTransitionIsStrict() {
        return true;
    }

    static statesTransition() {
        return {
            "activate": {
                "from": "pending",
                "to": "active"
            },
            "deactivate": {
                "from": ["pending", "active"],
                "to": "inactive"
            }
        };
    }

    async validateActive() {
        return true;
    }

    async beforeActive() {
        //some function here
    }

    async afterActive() {
        //some function here
    }
    
}

Test.init(
    {
        state: DataTypes.STRING
    }, {
        sequelize,
        modelName: 'Test',
        tableName: 'test',
        hooks: {
            async beforeCreate(model, options) {
               
            },
            async afterCreate(model, options) {

            },
            async beforeUpdate(model, options) {

            },
            async afterUpdate(model, options) {

            }
        }
        // options
    });


//place state machine after model init

stateMachine.addStates(Test.states())
    .addTransition(Test.statesTransition())
    .isStrict(Test.stateTransitionIsStrict())
    .stateField("state")
    .init(Test);

export default Test;

sequelize-state-machine's People

Contributors

billyadelphia avatar dependabot[bot] avatar kron0s avatar

Stargazers

Olaniyi Philip Ojeyinka  avatar David Turton avatar  avatar Viswanath avatar Lee avatar Samuele Zaza avatar Son Nguyen avatar

Watchers

James Cloos avatar  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.