unleash-server
Version:
Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.
43 lines • 1.97 kB
JavaScript
import { calculateProjectHealthRating } from '../../domain/project-health/project-health.js';
export class ProjectStatusService {
constructor({ eventStore, projectStore, apiTokenStore, segmentStore, featureTypeStore, featureToggleStore, }, projectLifecycleReadModel, projectStaleFlagsReadModel) {
this.eventStore = eventStore;
this.projectStore = projectStore;
this.apiTokenStore = apiTokenStore;
this.segmentStore = segmentStore;
this.projectLifecycleSummaryReadModel = projectLifecycleReadModel;
this.projectStaleFlagsReadModel = projectStaleFlagsReadModel;
this.featureTypeStore = featureTypeStore;
this.featureToggleStore = featureToggleStore;
}
async getProjectStatus(projectId) {
const [members, apiTokens, segments, activityCountByDate, currentHealth, lifecycleSummary, staleFlagCount,] = await Promise.all([
this.projectStore.getMembersCountByProject(projectId),
this.apiTokenStore.countProjectTokens(projectId),
this.segmentStore.getProjectSegmentCount(projectId),
this.eventStore.getProjectRecentEventActivity(projectId),
calculateProjectHealthRating(this.featureTypeStore, this.featureToggleStore)({ id: projectId }),
this.projectLifecycleSummaryReadModel.getProjectLifecycleSummary(projectId),
this.projectStaleFlagsReadModel.getStaleFlagCountForProject(projectId),
]);
return {
resources: {
members,
apiTokens,
segments,
},
activityCountByDate,
health: {
current: currentHealth,
},
technicalDebt: {
current: 100 - currentHealth,
},
lifecycleSummary,
staleFlags: {
total: staleFlagCount,
},
};
}
}
//# sourceMappingURL=project-status-service.js.map