el-borracho-basic
Version:
One-line zero-config ElBorrachoJS UI+API+Stats metapackage
74 lines (55 loc) • 1.88 kB
text/coffeescript
require "source-map-support/register"
Redis = require "ioredis"
errify = require "errify"
Skeleton = require "nextorigin-express-skeleton"
Queue = require "bull"
Borracho = require "el-borracho/router"
Stats = require "el-borracho-stats/router"
root = require "el-borracho-ui/asset-path"
class ElBorrachoBasic extends Skeleton
logPrefix: "(El Borracho)"
constructor: ( = {}) ->
or= .redis or Redis.createClient()
.address or= "0.0.0.0"
.api ?= true
.stats ?= true
.ui ?= true
if .ui
.static = {root}
unless process.env.NODE_ENV is "development"
oneYear = 86400
.static.options = maxAge: oneYear
super options
"initializing basic"
initStats: (callback) ->
ideally = errify callback
Worker = require "el-borracho-stats/worker"
Store = require "el-borracho/lib/redis-model"
store = new Store
= {}
await store.queueNames ideally defer names
for name in names
queue = new Queue name, redis: opts: createClient: =>
stats = new Worker {queue}
[name] = stats
callback()
bindRoutes: ->
if .api
if .stats
routeApi: ->
mount = if .ui then "/jobs" else "/"
= new Borracho {, }
.use mount, .router
routeStats: ->
= new Stats {, }
.use "/stats", .router
listen: ->
ideally = errify (err) -> throw err
if .stats
await ideally defer()
stats.listen() for _, stats of
super
close: ->
await stats.stop defer() for _, stats of when stats?
super
module.exports = ElBorrachoBasic