Constructor
new MessageActor(eventSchema, commandSchemaopt, modelSchemaopt, repositoryopt)
Properties:
| Name | Type | Description | 
|---|---|---|
| repository | any | A reference to a storage layer client of your choosing or undefined. | 
Parameters:
| Name | Type | Attributes | Description | 
|---|---|---|---|
| eventSchema | Schema | The instance of the Actor's associated Event JSON Schema definition. | |
| commandSchema | Schema | <optional> | The optional instance of the Actor's associated Command JSON Schema definition. | 
| modelSchema | Schema | <optional> | The instance of the associated Model's JSON Schema definition. | 
| repository | any | <optional> | An optional reference to a storage layer client of your choosing. | 
Examples
A Command example MessageActor class. It is meant to be wrapped with one of the microservice types (Producer, Consumer, Stream Processor). Actors wrapped by each of the previously mentioned types are passed references to the centralized log store when perform and replay methods are called.
import { MessageActor, Schema } from 'hive-io'
import ExampleSchema from '../schemas/ExampleSchema.json'
import EventSchema from '../schemas/EventSchema.json'
import CommandSchema from '../schemas/CommandSchema.json'
class CommandActor extends MessageActor {
  async perform (model, action) {
    // Do something interesting with the data
  }
}
// Proxy<CommandActor>
export default new Proxy(CommandActor, {
  construct: async function (CommandActor, argsList) {
    const example = await new Schema(ExampleSchema)
    const event = await new Schema(EventSchema)
    const command = await new Schema(CommandSchema)
    return new CommandActor(event, command, example, argsList[0])
  }
})An Event example MessageActor class. It is meant to be wrapped with one of the microservice types (Producer, Consumer, Stream Processor). Actors wrapped by each of the previously mentioned types are passed references to the centralized log store when perform and replay methods are called.
import { MessageActor, Schema } from 'hive-io'
import ExampleSchema from '../schemas/ExampleSchema.json'
import EventSchema from '../schemas/EventSchema.json'
class EventActor extends MessageActor {
  async perform (model, action) {
    // Do something interesting with the data
  }
}
// Proxy<EventActor>
export default new Proxy(EventActor, {
  construct: async function (EventActor, argsList) {
    const example = await new Schema(ExampleSchema)
    const event = await new Schema(EventSchema)
    return new EventActor(event, undefined, example, argsList[0])
  }
})Methods
assign(model, payloadopt, metaopt) → {Object}
model from specified payload. It also handles data version specified in the meta Object literal to optionally assist in optimisted concurrency techniques if set.
Parameters:
| Name | Type | Attributes | Default | Description | 
|---|---|---|---|---|
| model | Object | The instance of a model to receive new data. | ||
| payload | Object | <optional> | {} | The payload to apply to the model. | 
| meta | Object | <optional> | The metadata associated with the payload being assigned. | 
Returns:
- Type:
- 
        
Object
(async) perform(model, actionopt) → {Object}
action to the specified model.
Parameters:
| Name | Type | Attributes | Description | 
|---|---|---|---|
| model | Object | An instance of the model associated with the received data generated from replay. | |
| action | Object | <optional> | An optional FSA Object literal containing the Model's typeand optionalmetaandpayload. | 
Returns:
- Type:
- 
        
Object