-
-
Notifications
You must be signed in to change notification settings - Fork 658
/
createProjectInsightsService.ts
81 lines (76 loc) · 2.9 KB
/
createProjectInsightsService.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import type { Db, IUnleashConfig } from '../../server-impl';
import FeatureToggleStore from '../feature-toggle/feature-toggle-store';
import ProjectStatsStore from '../../db/project-stats-store';
import FakeProjectStore from '../../../test/fixtures/fake-project-store';
import FakeFeatureToggleStore from '../feature-toggle/fakes/fake-feature-toggle-store';
import FakeProjectStatsStore from '../../../test/fixtures/fake-project-stats-store';
import FeatureTypeStore from '../../db/feature-type-store';
import FakeFeatureTypeStore from '../../../test/fixtures/fake-feature-type-store';
import { ProjectInsightsService } from './project-insights-service';
import ProjectStore from '../project/project-store';
import { ProjectInsightsReadModel } from './project-insights-read-model';
import { FakeProjectInsightsReadModel } from './fake-project-insights-read-model';
import FeatureStrategiesStore from '../feature-toggle/feature-toggle-strategies-store';
import FakeFeatureStrategiesStore from '../feature-toggle/fakes/fake-feature-strategies-store';
export const createProjectInsightsService = (
db: Db,
config: IUnleashConfig,
): ProjectInsightsService => {
const { eventBus, getLogger, flagResolver } = config;
const projectStore = new ProjectStore(
db,
eventBus,
getLogger,
flagResolver,
);
const featureToggleStore = new FeatureToggleStore(
db,
eventBus,
getLogger,
flagResolver,
);
const featureTypeStore = new FeatureTypeStore(db, getLogger);
const projectStatsStore = new ProjectStatsStore(db, eventBus, getLogger);
const featureStrategiesStore = new FeatureStrategiesStore(
db,
eventBus,
getLogger,
flagResolver,
);
const projectInsightsReadModel = new ProjectInsightsReadModel(db);
return new ProjectInsightsService(
{
projectStore,
featureToggleStore,
featureTypeStore,
projectStatsStore,
featureStrategiesStore,
},
projectInsightsReadModel,
);
};
export const createFakeProjectInsightsService = () => {
const projectStore = new FakeProjectStore();
const featureToggleStore = new FakeFeatureToggleStore();
const featureTypeStore = new FakeFeatureTypeStore();
const projectStatsStore = new FakeProjectStatsStore();
const featureStrategiesStore = new FakeFeatureStrategiesStore();
const projectInsightsReadModel = new FakeProjectInsightsReadModel();
const projectInsightsService = new ProjectInsightsService(
{
projectStore,
featureToggleStore,
featureTypeStore,
projectStatsStore,
featureStrategiesStore,
},
projectInsightsReadModel,
);
return {
projectInsightsService,
projectStatsStore,
featureToggleStore,
projectStore,
projectInsightsReadModel,
};
};