Skip to content

eventstore implemented using leveldb-mount, leveldb and level-logs

Notifications You must be signed in to change notification settings

JamesKyburz/level-eventstore

Repository files navigation

level-eventstore

eventstore using leveldb

js-standard-style build status Docker Build Status downloads Docker Pulls Greenkeeper badge

server

npm start

Docker

Docker images hosted at https://hub.docker.com/r/jameskyburz/level-eventstore/

docker pull jameskyburz/level-eventstore:version

Running in docker

ᐅ docker pull jameskyburz/level-eventstore:version
ᐅ docker run --rm --name level-eventstore -p 5000:5000 jameskyburz/level-eventstore:version

example

const wsUrl = 'ws://guest:guest@localhost:5000'
const httpUrl = 'http://guest:guest@localhost:5000'
const client = require('level-eventstore-client')({ wsUrl, httpUrl })

await client.append({
  log: 'users',
  type: 'signup',
  payload: {
    email: 'foo@bar'
  }
})

await client.append({
  log: 'users',
  type: 'verifyAccount',
  payload: {
    id: '38390783-cd60-4190-8b94-a3d4ac24d653'
  }
})

const close = client.handleEvents({ log: 'users', since: 0 })({
  async signup (payload) {
    console.log('insert', payload)
  },
  async verifyAccount (payload) {
    console.log('verify', payload)
  }
})

insert { email: 'foo@bar', id: '1def7ce5-9da4-40cc-8594-c739fad36a2b' }
verify { id: '38390783-cd60-4190-8b94-a3d4ac24d653' }

event handlers can be generators, async functions, or vanilla functions in this case they need an extra callback argument.

license

Apache License, Version 2.0