fix: pass config to service loader

This commit is contained in:
Sebastian Rindom
2020-09-01 12:35:15 +02:00
parent c9125dfa8d
commit d7cd7e9674
3 changed files with 12 additions and 7 deletions

View File

@@ -49,7 +49,7 @@ export default async ({ directory: rootDirectory, expressApp }) => {
await modelsLoader({ container })
Logger.info("Models initialized")
await servicesLoader({ container })
await servicesLoader({ container, configModule })
Logger.info("Services initialized")
await subscribersLoader({ container })

View File

@@ -6,7 +6,7 @@ import { Lifetime, asFunction } from "awilix"
/**
* Registers all services in the services directory
*/
export default ({ container }) => {
export default ({ container, configModule }) => {
const isTest = process.env.NODE_ENV === "test"
const corePath = isTest ? "../services/__mocks__/*.js" : "../services/*.js"
@@ -17,7 +17,9 @@ export default ({ container }) => {
const loaded = require(fn).default
const name = formatRegistrationName(fn)
container.register({
[name]: asFunction(cradle => new loaded(cradle)).singleton(),
[name]: asFunction(
cradle => new loaded(cradle, configModule)
).singleton(),
})
})
}

View File

@@ -1,13 +1,13 @@
import Bull from "bull"
import Redis from "ioredis"
import config from "../config"
/**
* Can keep track of multiple subscribers to different events and run the
* subscribers when events happen. Events will run asynchronously.
* @interface
*/
class EventBusService {
constructor({ logger, redisClient, redisSubscriber }) {
constructor({ logger, redisClient, redisSubscriber }, config) {
/** @private {logger} */
this.logger_ = logger
@@ -18,7 +18,10 @@ class EventBusService {
this.cronHandlers_ = {}
/** @private {BullQueue} used for cron jobs */
this.cronQueue_ = new Bull(`cron-jobs:queue`, config.redisURI)
this.cronQueue_ = new Bull(
`cron-jobs:queue`,
config.projectConfig.redis_url
)
const opts = {
createClient: type => {
@@ -28,7 +31,7 @@ class EventBusService {
case "subscriber":
return redisSubscriber
default:
return new Redis(config.redisURI)
return new Redis(config.projectConfig.redis_url)
}
},
}