1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-05-03 01:18:43 +02:00
unleash.unleash/src/lib/features/dependent-features/createDependentFeaturesService.ts
Gastón Fournier 2ddc56927e
chore: centralize events service creation (#5910)
## About the changes
EventsService is a dependency in most of our services. This creates
helper methods to create them easily and replace a few places where
we're creating them manually
2024-01-16 13:11:28 +01:00

56 lines
2.3 KiB
TypeScript

import { Db } from '../../db/db';
import { DependentFeaturesService } from './dependent-features-service';
import { DependentFeaturesStore } from './dependent-features-store';
import { DependentFeaturesReadModel } from './dependent-features-read-model';
import { FakeDependentFeaturesStore } from './fake-dependent-features-store';
import { FakeDependentFeaturesReadModel } from './fake-dependent-features-read-model';
import { IUnleashConfig } from '../../types';
import {
createChangeRequestAccessReadModel,
createFakeChangeRequestAccessService,
} from '../change-request-access-service/createChangeRequestAccessReadModel';
import { FeaturesReadModel } from '../feature-toggle/features-read-model';
import { FakeFeaturesReadModel } from '../feature-toggle/fakes/fake-features-read-model';
import {
createEventsService,
createFakeEventsService,
} from '../events/createEventsService';
export const createDependentFeaturesService =
(config: IUnleashConfig) =>
(db: Db): DependentFeaturesService => {
const eventService = createEventsService(db, config);
const dependentFeaturesStore = new DependentFeaturesStore(db);
const dependentFeaturesReadModel = new DependentFeaturesReadModel(db);
const changeRequestAccessReadModel = createChangeRequestAccessReadModel(
db,
config,
);
const featuresReadModel = new FeaturesReadModel(db);
return new DependentFeaturesService({
dependentFeaturesStore,
dependentFeaturesReadModel,
changeRequestAccessReadModel,
featuresReadModel,
eventService,
});
};
export const createFakeDependentFeaturesService = (
config: IUnleashConfig,
): DependentFeaturesService => {
const eventService = createFakeEventsService(config);
const dependentFeaturesStore = new FakeDependentFeaturesStore();
const dependentFeaturesReadModel = new FakeDependentFeaturesReadModel();
const changeRequestAccessReadModel = createFakeChangeRequestAccessService();
const featuresReadModel = new FakeFeaturesReadModel();
return new DependentFeaturesService({
dependentFeaturesStore,
dependentFeaturesReadModel,
changeRequestAccessReadModel,
featuresReadModel,
eventService,
});
};