1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-06-04 01:18:20 +02:00
unleash.unleash/src/lib/features/events/createEventsService.ts
Jaanus Sellin 627768b96c
feat: start using event service composition root (#7871)
During adding privateProjectsChecker, I saw that events composition root
is not used almost at all.
Refactored code so we do not call new EventService anymore.
2024-08-15 08:33:46 +03:00

52 lines
1.6 KiB
TypeScript

import FakeEventStore from '../../../test/fixtures/fake-event-store';
import FakeFeatureTagStore from '../../../test/fixtures/fake-feature-tag-store';
import type { Db } from '../../db/db';
import EventStore from './event-store';
import FeatureTagStore from '../../db/feature-tag-store';
import { EventService } from '../../services';
import type {
IEventStore,
IFeatureTagStore,
IUnleashConfig,
} from '../../types';
import {
createFakePrivateProjectChecker,
createPrivateProjectChecker,
} from '../private-project/createPrivateProjectChecker';
export const createEventsService: (
db: Db,
config: IUnleashConfig,
) => EventService = (db, config) => {
const eventStore = new EventStore(db, config.getLogger);
const featureTagStore = new FeatureTagStore(
db,
config.eventBus,
config.getLogger,
);
const privateProjectChecker = createPrivateProjectChecker(db, config);
return new EventService(
{ eventStore, featureTagStore },
config,
privateProjectChecker,
);
};
export const createFakeEventsService: (
config: IUnleashConfig,
stores?: {
eventStore?: IEventStore;
featureTagStore?: IFeatureTagStore;
},
) => EventService = (config, stores) => {
const eventStore = stores?.eventStore || new FakeEventStore();
const featureTagStore =
stores?.featureTagStore || new FakeFeatureTagStore();
const fakePrivateProjectChecker = createFakePrivateProjectChecker();
return new EventService(
{ eventStore, featureTagStore },
config,
fakePrivateProjectChecker,
);
};