Skip to content

Commit c388346

Browse files
committed
Add increment courses counter subscriber to backoffice frontend
1 parent 0a26b7d commit c388346

File tree

4 files changed

+30
-1
lines changed

4 files changed

+30
-1
lines changed

src/Contexts/Shared/infrastructure/EventBus/EventEmitterBus.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export class EventEmitterBus extends EventEmitter {
1717

1818
private registerSubscriber(subscriber: DomainEventSubscriber<DomainEvent>) {
1919
subscriber.subscribedTo().map(event => {
20-
this.on(event.EVENT_NAME, subscriber.on);
20+
this.on(event.EVENT_NAME, subscriber.on.bind(subscriber));
2121
});
2222
}
2323

src/apps/backoffice/frontend/app.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import cookieSession from 'cookie-session';
88
import cookieParser from 'cookie-parser';
99
import flash from 'connect-flash';
1010
import nunjucks from 'nunjucks';
11+
import { registerSubscribers } from './subscribers';
1112

1213
const app: express.Express = express();
1314

@@ -43,5 +44,6 @@ app.use(helmet.frameguard({ action: 'deny' }));
4344
app.use(compress());
4445

4546
registerRoutes(app);
47+
registerSubscribers();
4648

4749
export default app;

src/apps/backoffice/frontend/config/dependency-injection/application.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,19 @@ services:
4646
tags:
4747
- { name: 'queryHandler' }
4848

49+
Mooc.coursesCounter.CoursesCounterIncrementer:
50+
class: ../../../../../Contexts/Mooc/CoursesCounter/application/Increment/CoursesCounterIncrementer
51+
arguments: [
52+
"@Mooc.coursesCounter.CoursesCounterRepository",
53+
"@Mooc.shared.EventBus"
54+
]
55+
56+
Mooc.coursesCounter.IncrementCoursesCounterOnCourseCreated:
57+
class: ../../../../../Contexts/Mooc/CoursesCounter/application/Increment/IncrementCoursesCounterOnCourseCreated
58+
arguments: ["@Mooc.coursesCounter.CoursesCounterIncrementer"]
59+
tags:
60+
- { name: 'domainEventSubscriber' }
61+
4962
Mooc.courses.CreateCourseCommandHandler:
5063
class: ../../../../../Contexts/Mooc/Courses/application/CreateCourseCommandHandler
5164
arguments: ['@Mooc.courses.CourseCreator']
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import container from './config/dependency-injection';
2+
import { InMemoryAsyncEventBus } from '../../../Contexts/Shared/infrastructure/EventBus/InMemoryAsyncEventBus';
3+
import { Definition } from 'node-dependency-injection';
4+
import { DomainEventSubscriber } from '../../../Contexts/Shared/domain/DomainEventSubscriber';
5+
import { DomainEvent } from '../../../Contexts/Shared/domain/DomainEvent';
6+
7+
export function registerSubscribers() {
8+
const eventBus = container.get('Mooc.shared.EventBus') as InMemoryAsyncEventBus;
9+
const subscriberDefinitions = container.findTaggedServiceIds('domainEventSubscriber') as Map<String, Definition>;
10+
const subscribers: Array<DomainEventSubscriber<DomainEvent>> = [];
11+
12+
subscriberDefinitions.forEach((value: any, key: any) => subscribers.push(container.get(key)));
13+
eventBus.addSubscribers(subscribers);
14+
}

0 commit comments

Comments
 (0)