mirror of
https://github.com/Unleash/unleash.git
synced 2025-10-27 11:02:16 +01:00
To show/hide onboarding flow, we need to get extra info about onboarding status. This PR adds it to project overview.
233 lines
7.9 KiB
TypeScript
233 lines
7.9 KiB
TypeScript
import type { Db, IUnleashConfig } from '../../server-impl';
|
|
import EventStore from '../events/event-store';
|
|
import GroupStore from '../../db/group-store';
|
|
import { AccountStore } from '../../db/account-store';
|
|
import EnvironmentStore from '../project-environments/environment-store';
|
|
import {
|
|
type AccessService,
|
|
ApiTokenService,
|
|
FavoritesService,
|
|
GroupService,
|
|
ProjectService,
|
|
} from '../../services';
|
|
import FakeGroupStore from '../../../test/fixtures/fake-group-store';
|
|
import FakeEventStore from '../../../test/fixtures/fake-event-store';
|
|
import ProjectStore from './project-store';
|
|
import FeatureToggleStore from '../feature-toggle/feature-toggle-store';
|
|
import { FeatureEnvironmentStore } from '../../db/feature-environment-store';
|
|
import ProjectStatsStore from '../../db/project-stats-store';
|
|
import {
|
|
createAccessService,
|
|
createFakeAccessService,
|
|
} from '../access/createAccessService';
|
|
import {
|
|
createFakeFeatureToggleService,
|
|
createFeatureToggleService,
|
|
} from '../feature-toggle/createFeatureToggleService';
|
|
import { FavoriteFeaturesStore } from '../../db/favorite-features-store';
|
|
import { FavoriteProjectsStore } from '../../db/favorite-projects-store';
|
|
import FakeProjectStore from '../../../test/fixtures/fake-project-store';
|
|
import FakeFeatureToggleStore from '../feature-toggle/fakes/fake-feature-toggle-store';
|
|
import FakeEnvironmentStore from '../project-environments/fake-environment-store';
|
|
import FakeFeatureEnvironmentStore from '../../../test/fixtures/fake-feature-environment-store';
|
|
import FakeProjectStatsStore from '../../../test/fixtures/fake-project-stats-store';
|
|
import FakeFavoriteFeaturesStore from '../../../test/fixtures/fake-favorite-features-store';
|
|
import FakeFavoriteProjectsStore from '../../../test/fixtures/fake-favorite-projects-store';
|
|
import { FakeAccountStore } from '../../../test/fixtures/fake-account-store';
|
|
import {
|
|
createFakePrivateProjectChecker,
|
|
createPrivateProjectChecker,
|
|
} from '../private-project/createPrivateProjectChecker';
|
|
import { ProjectOwnersReadModel } from './project-owners-read-model';
|
|
import { FakeProjectOwnersReadModel } from './fake-project-owners-read-model';
|
|
import { FakeProjectFlagCreatorsReadModel } from './fake-project-flag-creators-read-model';
|
|
import { ProjectFlagCreatorsReadModel } from './project-flag-creators-read-model';
|
|
import FakeApiTokenStore from '../../../test/fixtures/fake-api-token-store';
|
|
import { ApiTokenStore } from '../../db/api-token-store';
|
|
import {
|
|
createEventsService,
|
|
createFakeEventsService,
|
|
} from '../events/createEventsService';
|
|
import {
|
|
createFakeProjectReadModel,
|
|
createProjectReadModel,
|
|
} from './createProjectReadModel';
|
|
import {
|
|
createFakeOnboardingReadModel,
|
|
createOnboardingReadModel,
|
|
} from '../onboarding/createOnboardingReadModel';
|
|
|
|
export const createProjectService = (
|
|
db: Db,
|
|
config: IUnleashConfig,
|
|
): ProjectService => {
|
|
const { eventBus, getLogger, flagResolver } = config;
|
|
const eventStore = new EventStore(db, getLogger);
|
|
const projectStore = new ProjectStore(
|
|
db,
|
|
eventBus,
|
|
getLogger,
|
|
flagResolver,
|
|
);
|
|
const projectOwnersReadModel = new ProjectOwnersReadModel(db);
|
|
const projectFlagCreatorsReadModel = new ProjectFlagCreatorsReadModel(db);
|
|
const groupStore = new GroupStore(db);
|
|
const featureToggleStore = new FeatureToggleStore(
|
|
db,
|
|
eventBus,
|
|
getLogger,
|
|
flagResolver,
|
|
);
|
|
const accountStore = new AccountStore(db, getLogger);
|
|
const environmentStore = new EnvironmentStore(db, eventBus, getLogger);
|
|
const featureEnvironmentStore = new FeatureEnvironmentStore(
|
|
db,
|
|
eventBus,
|
|
getLogger,
|
|
);
|
|
const projectStatsStore = new ProjectStatsStore(db, eventBus, getLogger);
|
|
const accessService: AccessService = createAccessService(db, config);
|
|
const featureToggleService = createFeatureToggleService(db, config);
|
|
const favoriteFeaturesStore = new FavoriteFeaturesStore(
|
|
db,
|
|
eventBus,
|
|
getLogger,
|
|
);
|
|
const favoriteProjectsStore = new FavoriteProjectsStore(
|
|
db,
|
|
eventBus,
|
|
getLogger,
|
|
);
|
|
const eventService = createEventsService(db, config);
|
|
const favoriteService = new FavoritesService(
|
|
{
|
|
favoriteFeaturesStore,
|
|
favoriteProjectsStore,
|
|
},
|
|
config,
|
|
eventService,
|
|
);
|
|
const groupService = new GroupService(
|
|
{ groupStore, accountStore },
|
|
{ getLogger },
|
|
eventService,
|
|
);
|
|
|
|
const apiTokenStore = new ApiTokenStore(
|
|
db,
|
|
eventBus,
|
|
getLogger,
|
|
flagResolver,
|
|
);
|
|
|
|
const privateProjectChecker = createPrivateProjectChecker(db, config);
|
|
|
|
const apiTokenService = new ApiTokenService(
|
|
{ apiTokenStore, environmentStore },
|
|
config,
|
|
eventService,
|
|
);
|
|
|
|
const projectReadModel = createProjectReadModel(
|
|
db,
|
|
eventBus,
|
|
config.flagResolver,
|
|
);
|
|
|
|
const onboardingReadModel = createOnboardingReadModel(db);
|
|
|
|
return new ProjectService(
|
|
{
|
|
projectStore,
|
|
eventStore,
|
|
featureToggleStore,
|
|
environmentStore,
|
|
featureEnvironmentStore,
|
|
accountStore,
|
|
projectStatsStore,
|
|
projectOwnersReadModel,
|
|
projectFlagCreatorsReadModel,
|
|
projectReadModel,
|
|
onboardingReadModel,
|
|
},
|
|
config,
|
|
accessService,
|
|
featureToggleService,
|
|
groupService,
|
|
favoriteService,
|
|
eventService,
|
|
privateProjectChecker,
|
|
apiTokenService,
|
|
);
|
|
};
|
|
|
|
export const createFakeProjectService = (
|
|
config: IUnleashConfig,
|
|
): ProjectService => {
|
|
const { getLogger } = config;
|
|
const eventStore = new FakeEventStore();
|
|
const projectOwnersReadModel = new FakeProjectOwnersReadModel();
|
|
const projectFlagCreatorsReadModel = new FakeProjectFlagCreatorsReadModel();
|
|
const projectStore = new FakeProjectStore();
|
|
const groupStore = new FakeGroupStore();
|
|
const featureToggleStore = new FakeFeatureToggleStore();
|
|
const accountStore = new FakeAccountStore();
|
|
const environmentStore = new FakeEnvironmentStore();
|
|
const featureEnvironmentStore = new FakeFeatureEnvironmentStore();
|
|
const projectStatsStore = new FakeProjectStatsStore();
|
|
const { accessService } = createFakeAccessService(config);
|
|
const { featureToggleService } = createFakeFeatureToggleService(config);
|
|
const favoriteFeaturesStore = new FakeFavoriteFeaturesStore();
|
|
const favoriteProjectsStore = new FakeFavoriteProjectsStore();
|
|
const apiTokenStore = new FakeApiTokenStore();
|
|
const privateProjectChecker = createFakePrivateProjectChecker();
|
|
const eventService = createFakeEventsService(config);
|
|
const favoriteService = new FavoritesService(
|
|
{
|
|
favoriteFeaturesStore,
|
|
favoriteProjectsStore,
|
|
},
|
|
config,
|
|
eventService,
|
|
);
|
|
const groupService = new GroupService(
|
|
{ groupStore, accountStore },
|
|
{ getLogger },
|
|
eventService,
|
|
);
|
|
|
|
const apiTokenService = new ApiTokenService(
|
|
{ apiTokenStore, environmentStore },
|
|
config,
|
|
eventService,
|
|
);
|
|
|
|
const projectReadModel = createFakeProjectReadModel();
|
|
|
|
const onboardingReadModel = createFakeOnboardingReadModel();
|
|
|
|
return new ProjectService(
|
|
{
|
|
projectStore,
|
|
projectOwnersReadModel,
|
|
projectFlagCreatorsReadModel,
|
|
eventStore,
|
|
featureToggleStore,
|
|
environmentStore,
|
|
featureEnvironmentStore,
|
|
accountStore,
|
|
projectStatsStore,
|
|
projectReadModel,
|
|
onboardingReadModel,
|
|
},
|
|
config,
|
|
accessService,
|
|
featureToggleService,
|
|
groupService,
|
|
favoriteService,
|
|
eventService,
|
|
privateProjectChecker,
|
|
apiTokenService,
|
|
);
|
|
};
|