Skip to content

tarantx/tarant-sync-router-express

Repository files navigation

logomakr_0zeodi

npm Build Status Coverage Status PRs Welcome issues Welcome npm GitHub issues GitHub pull requests Downloads

Motivation

remote-sync server for bindings clients using routers or tarant-sync-router-express

Installation

add it to your project using npm install tarant-sync-router-express --save or yarn add tarant-sync-router-express

Usage

initialize your controllers/routers by calling the SyncController with the actor system and the wanted configuration. Adding them to your express app.

import SyncController from "tarant-sync-router-express"
import { ActorSystem, ActorSystemConfigurationBuilder } from 'tarant'
import AppActor from '../AppActor'

const app: express.Application = express()
const port: number = 3002
const config : any  = {
      paths: {
          pull: "/pull", 
          push: "/push", 
      },
      actorTypes: { AppActor }
}

const system : any = ActorSystem.for(ActorSystemConfigurationBuilder.define().done())  

app.use(SyncController(system, config))

app.listen(port, () => {
    console.log(`Listening at http://localhost:${port}/`)
})

your actors will require to implement IUpdatable (UpdateFrom) and IExportable (toJson)

import { Actor } from "tarant";
import { IUpdatable, IExportable } from "tarant-sync-router-express"

export default class AppActor extends Actor implements IUpdatable, IExportable {

  constructor(name: string) {
      super(name)
  }

  addOne() {
      this.counter++
  }

  toJson(){
        return {
            id: this.id,
            type:"AppActor",
            counter: this.counter
        }
    }

    updateFrom({ counter }: any): void {
        this.counter = counter
    }

    private counter = 1; 
}

confiuration options

  1. paths.pull: path to endpoint for pulling data from the backend
  2. paths.push: path to endpoint for pushing data to the backend
  3. ActorTypes: objects registering the type of actors that should be sync with the backend
Created my free logo at LogoMakr.com