mikro-orm/mikro-orm

View on GitHub
packages/core/src/events/EventSubscriber.ts

Summary

Maintainability
A
0 mins
Test Coverage
import type { EntityName, EntityMetadata } from '../typings';
import type { EntityManager } from '../EntityManager';
import type { ChangeSet, UnitOfWork } from '../unit-of-work';
import type { Transaction } from '../connections';

export interface EventArgs<T> {
  entity: T;
  em: EntityManager;
  meta: EntityMetadata<T>;
  changeSet?: ChangeSet<T & {}>;
}

export interface FlushEventArgs extends Omit<EventArgs<any>, 'entity' | 'changeSet' | 'meta'> {
  uow: UnitOfWork;
}

export interface TransactionEventArgs extends Omit<EventArgs<any>, 'entity' | 'meta' | 'changeSet'> {
  transaction?: Transaction;
  uow?: UnitOfWork;
}

export interface EventSubscriber<T = any> {
  getSubscribedEntities?(): EntityName<T>[];
  onInit?(args: EventArgs<T>): void;
  onLoad?(args: EventArgs<T>): void | Promise<void>;
  beforeCreate?(args: EventArgs<T>): void | Promise<void>;
  afterCreate?(args: EventArgs<T>): void | Promise<void>;
  beforeUpdate?(args: EventArgs<T>): void | Promise<void>;
  afterUpdate?(args: EventArgs<T>): void | Promise<void>;
  beforeUpsert?(args: EventArgs<T>): void | Promise<void>;
  afterUpsert?(args: EventArgs<T>): void | Promise<void>;
  beforeDelete?(args: EventArgs<T>): void | Promise<void>;
  afterDelete?(args: EventArgs<T>): void | Promise<void>;
  beforeFlush?(args: FlushEventArgs): void | Promise<void>;
  onFlush?(args: FlushEventArgs): void | Promise<void>;
  afterFlush?(args: FlushEventArgs): void | Promise<void>;

  beforeTransactionStart?(args: TransactionEventArgs): void | Promise<void>;
  afterTransactionStart?(args: TransactionEventArgs): void | Promise<void>;
  beforeTransactionCommit?(args: TransactionEventArgs): void | Promise<void>;
  afterTransactionCommit?(args: TransactionEventArgs): void | Promise<void>;
  beforeTransactionRollback?(args: TransactionEventArgs): void | Promise<void>;
  afterTransactionRollback?(args: TransactionEventArgs): void | Promise<void>;
}