Add basic concepts for event bus, and implement in request and model
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
9
src/orm/model/events/ModelCreatedEvent.ts
Normal file
9
src/orm/model/events/ModelCreatedEvent.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import {Model} from '../Model'
|
||||
import {ModelEvent} from './ModelEvent'
|
||||
|
||||
/**
|
||||
* Event fired right after a model is inserted.
|
||||
*/
|
||||
export class ModelCreatedEvent<T extends Model<T>> extends ModelEvent<T> {
|
||||
|
||||
}
|
||||
9
src/orm/model/events/ModelCreatingEvent.ts
Normal file
9
src/orm/model/events/ModelCreatingEvent.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import {Model} from '../Model'
|
||||
import {ModelEvent} from './ModelEvent'
|
||||
|
||||
/**
|
||||
* Event fired right before a model is inserted.
|
||||
*/
|
||||
export class ModelCreatingEvent<T extends Model<T>> extends ModelEvent<T> {
|
||||
|
||||
}
|
||||
9
src/orm/model/events/ModelDeletedEvent.ts
Normal file
9
src/orm/model/events/ModelDeletedEvent.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import {Model} from '../Model'
|
||||
import {ModelEvent} from './ModelEvent'
|
||||
|
||||
/**
|
||||
* Event fired right after a model is deleted.
|
||||
*/
|
||||
export class ModelDeletedEvent<T extends Model<T>> extends ModelEvent<T> {
|
||||
|
||||
}
|
||||
9
src/orm/model/events/ModelDeletingEvent.ts
Normal file
9
src/orm/model/events/ModelDeletingEvent.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import {Model} from '../Model'
|
||||
import {ModelEvent} from './ModelEvent'
|
||||
|
||||
/**
|
||||
* Event fired right before a model is deleted.
|
||||
*/
|
||||
export class ModelDeletingEvent<T extends Model<T>> extends ModelEvent<T> {
|
||||
|
||||
}
|
||||
31
src/orm/model/events/ModelEvent.ts
Normal file
31
src/orm/model/events/ModelEvent.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import {Model} from '../Model'
|
||||
import {Event} from '../../../event/Event'
|
||||
import {JSONState} from '../../../util'
|
||||
|
||||
/**
|
||||
* Base class for events that concern an instance of a model.
|
||||
*/
|
||||
export abstract class ModelEvent<T extends Model<T>> extends Event {
|
||||
/**
|
||||
* The instance of the model.
|
||||
*/
|
||||
public instance!: T
|
||||
|
||||
constructor(
|
||||
instance?: T,
|
||||
) {
|
||||
super()
|
||||
if ( instance ) {
|
||||
this.instance = instance
|
||||
}
|
||||
}
|
||||
|
||||
// TODO implement serialization here
|
||||
dehydrate(): Promise<JSONState> {
|
||||
return Promise.resolve({})
|
||||
}
|
||||
|
||||
rehydrate(/* state: JSONState */): void | Promise<void> {
|
||||
return undefined
|
||||
}
|
||||
}
|
||||
9
src/orm/model/events/ModelRetrievedEvent.ts
Normal file
9
src/orm/model/events/ModelRetrievedEvent.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import {Model} from '../Model'
|
||||
import {ModelEvent} from './ModelEvent'
|
||||
|
||||
/**
|
||||
* Event fired right after a model's data is loaded from the source.
|
||||
*/
|
||||
export class ModelRetrievedEvent<T extends Model<T>> extends ModelEvent<T> {
|
||||
|
||||
}
|
||||
9
src/orm/model/events/ModelSavedEvent.ts
Normal file
9
src/orm/model/events/ModelSavedEvent.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import {Model} from '../Model'
|
||||
import {ModelEvent} from './ModelEvent'
|
||||
|
||||
/**
|
||||
* Event fired right after a model is persisted to the source.
|
||||
*/
|
||||
export class ModelSavedEvent<T extends Model<T>> extends ModelEvent<T> {
|
||||
|
||||
}
|
||||
9
src/orm/model/events/ModelSavingEvent.ts
Normal file
9
src/orm/model/events/ModelSavingEvent.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import {Model} from '../Model'
|
||||
import {ModelEvent} from './ModelEvent'
|
||||
|
||||
/**
|
||||
* Event fired right before a model is persisted to the source.
|
||||
*/
|
||||
export class ModelSavingEvent<T extends Model<T>> extends ModelEvent<T> {
|
||||
|
||||
}
|
||||
9
src/orm/model/events/ModelUpdatedEvent.ts
Normal file
9
src/orm/model/events/ModelUpdatedEvent.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import {Model} from '../Model'
|
||||
import {ModelEvent} from './ModelEvent'
|
||||
|
||||
/**
|
||||
* Event fired right after a model's data is updated.
|
||||
*/
|
||||
export class ModelUpdatedEvent<T extends Model<T>> extends ModelEvent<T> {
|
||||
|
||||
}
|
||||
9
src/orm/model/events/ModelUpdatingEvent.ts
Normal file
9
src/orm/model/events/ModelUpdatingEvent.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import {Model} from '../Model'
|
||||
import {ModelEvent} from './ModelEvent'
|
||||
|
||||
/**
|
||||
* Event fired right before a model's data is updated.
|
||||
*/
|
||||
export class ModelUpdatingEvent<T extends Model<T>> extends ModelEvent<T> {
|
||||
|
||||
}
|
||||
21
src/orm/model/events/index.ts
Normal file
21
src/orm/model/events/index.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import {ModelCreatedEvent} from './ModelCreatedEvent'
|
||||
import {ModelUpdatingEvent} from './ModelUpdatingEvent'
|
||||
import {ModelCreatingEvent} from './ModelCreatingEvent'
|
||||
import {ModelSavedEvent} from './ModelSavedEvent'
|
||||
import {ModelDeletedEvent} from './ModelDeletedEvent'
|
||||
import {ModelDeletingEvent} from './ModelDeletingEvent'
|
||||
import {ModelRetrievedEvent} from './ModelRetrievedEvent'
|
||||
import {ModelUpdatedEvent} from './ModelUpdatedEvent'
|
||||
import {ModelEvent} from './ModelEvent'
|
||||
|
||||
export const ModelEvents = {
|
||||
ModelCreatedEvent,
|
||||
ModelCreatingEvent,
|
||||
ModelDeletedEvent,
|
||||
ModelDeletingEvent,
|
||||
ModelEvent,
|
||||
ModelRetrievedEvent,
|
||||
ModelSavedEvent,
|
||||
ModelUpdatedEvent,
|
||||
ModelUpdatingEvent,
|
||||
}
|
||||
Reference in New Issue
Block a user