graph-common
Version:
Open Graph API core js lib
42 lines (32 loc) • 1.35 kB
text/coffeescript
RouterManager takes care of building query's path through its routers.
Router = null
class RouterManager
constructor: (graph, done) ->
= graph
= .database
Router = .model('Router')
= {}
(done)
load_routers: (done) ->
self = @
Router.find({}, (err, routers) ->
self.add_router router for router in routers
done())
add_router: (router) ->
.verbose('RouterManager> add:', router.name)
[router.name] = router
get_router: (router_name) ->
unless [router_name].loaded
[router_name].loaded = require([router_name].require)
return [router_name].loaded
create_router: (router_data) ->
.verbose('RouterManager> create:', router_data)
router = new Router router_data
router
query: (query) ->
query.routers = []
for router_name, router_config of query.node.routers
query.routers.push { name: router_name, configuration: router_config, router: (router_name) }
.verbose('RouterManager> resolved:', query.routers)
query.current_router = query.routers.shift()
module.exports = RouterManager