Function StateMachineEntity

  • Mixin to extend your entity with state machine. Extends BaseEntity.

    Type Parameters

    • const Parameters extends {
          [Column in string | number | symbol]: IStateMachineEntityColumnParameters<any, any, any>
      }

    • Entity extends BaseEntity = BaseEntity

    • const Columns extends string | number | symbol = keyof Parameters

    Parameters

    • parameters: Parameters

      state machine parameters

    • Optional _BaseEntity: (new () => Entity)

      base entity class to extend from

        • new (): Entity
        • Returns Entity

    Returns (new () => Entity & {
        fsm: {
            [Column in string | number | symbol]: IStateMachine<ExtractState<Parameters, Column>, ExtractEvent<Parameters, Column>, ExtractContext<Parameters, Column>>
        };
        params: Parameters;
    } & {
        [Column in string | number | symbol]: ExtractState<Parameters, Column>
    })

      • new (): Entity & {
            fsm: {
                [Column in string | number | symbol]: IStateMachine<ExtractState<Parameters, Column>, ExtractEvent<Parameters, Column>, ExtractContext<Parameters, Column>>
            };
            params: Parameters;
        } & {
            [Column in string | number | symbol]: ExtractState<Parameters, Column>
        }
      • Returns Entity & {
            fsm: {
                [Column in string | number | symbol]: IStateMachine<ExtractState<Parameters, Column>, ExtractEvent<Parameters, Column>, ExtractContext<Parameters, Column>>
            };
            params: Parameters;
        } & {
            [Column in string | number | symbol]: ExtractState<Parameters, Column>
        }

    Example

    import { StateMachineEntity, t } from 'typeorm-fsm';

    enum OrderState {
    draft = 'draft',
    pending = 'pending',
    paid = 'paid',
    completed = 'completed',
    }

    enum OrderEvent {
    create = 'create',
    pay = 'pay',
    complete = 'complete',
    }

    @Entity()
    class Order extends StateMachineEntity({
    status: {
    id: 'orderStatus',
    initial: OrderState.draft,
    transitions: [
    t(OrderState.draft, OrderEvent.create, OrderState.pending),
    t(OrderState.pending, OrderEvent.pay, OrderState.paid),
    t(OrderState.paid, OrderEvent.complete, OrderState.completed),
    ],
    }}) {}

Generated using TypeDoc