eventive
v4.1.0
Published
     => {
// ...
return nextState;
};4. Maps older revision events to newer event interfaces for backwards compatibility
import { BaseMapper } from "eventive";
const mapper: BaseMapper<MyDomainEvent> = (event) => {
// ...
return currentRevisionEvent;
};5. Then, eventive automatically make common repository interface
import { eventive } from "eventive";
import { MongoClient } from "mongodb";
const mongoClient = new MongoClient();
const db = mongoClient.db("my_database");
const myRepository = eventive({
db,
entityName: "MyModel",
reducer,
mapper,
dbCollectionName: "events", // optional
});Usage
all()
/**
* Scan all entities
*/
myRepository.all();findOne()
/**
* Find one entity with `entityId`
*/
myRepository.findOne({
entityId: "...",
});batchGet()
/**
* Find many entities with `entityIds`
*/
myRepository.batchGet({
entityIds: ["...", "..."],
});create()
/**
* Create entity with initial DomainEvent
*/
const { commit } = myRepository.create({
eventName: "init",
eventBody: {
// ...
},
});dispatch()
/**
* Dispatch DomainEvent to entity
*/
const { commit } = myRepository.dispatch({
entity,
eventName: "edit",
eventBody: {
// ...
},
});